2'lik sayı sistemindeki sayılar nasıl yazıya çevirilir?

  • Konuyu başlatan 533388
  • Başlangıç Tarihi
  • Mesaj 17
  • Görüntüleme 456
ASCII her bir karakteri/şekli göstermek için 7 bitlik bir değer kullanır. Bunlar ascii tablosunda karakterlerin karşılığıdır. Decimal 65 yada 1000001 tabloda 'A' karakterine karşılık gelir mesela. Günümüzde "genişletilmiş" bir ASCII tablosu kullanılıyor. Dolayısıyla her bir karakter 8 bit ile gösteriliyor.

"ABC" dediğin zaman, "01000001 01000010 01000011" olarak karşılık buluyor aslında binary'de. Kalan kısımları @özgün deniz anlatmış zaten.
 
@özgün deniz ya ikilik sistemdeki sayıları onluk sisteme çevirmeyi öğrendim ama yazıları da çevirmeyi öğrenmek istedim.
Sayıların bir harfe karşılık geleceği tablo lazım. Standart tablolar da var nadir kullanılanlar da. 74HC595 çipinde kullanmak için kendi tablomu da yapmıştım bi' ara. 10111100, G harfini temsil ediyor bu tabloda.

Yani yine sayılardan ibaret.
 
Javascript kullanıyorsun sanırım, güzelce açıklamışlar örnek kod bırakayım bende.
JavaScript:
const text = "Technopat";

let output = text
  .split("") // karakterleri ayırıyoruz.
  .map(
    (char) =>
      char
        .charCodeAt(0) // karakterin unicode değerini alıyoruz.
        .toString(2) // unicode değerini base 2 (binary) formatında çeviriyoruz.
  )
  .join(" "); // aralarında boşluk olacak şekilde birleştiriyoruz.

console.log(output); // 1010100 1100101 1100011 1101000 1101110 1101111 1110000 1100001 1110100
 
2'lik sayı sistemindeki sayıları onluk sisteme çevirmeyi biliyorum. Ama örnek olarak Technopat yazısını nasıl veya başka bir yazıyı nasıl buna çevirebilirim ya da mantığı ne?

Eki Görüntüle 1970035
Her 8'li grup bir char yani karakter temsil ediyor burada.
Bu karakterleri elde etmek için 8'li grup olarak verilen binaryleri tam sayıya dönüştürmeliyiz.

1. Kısım binaryleri, diziye alalım
Java:
String[] binaryler = new String[] {
   
                "01010100",
                "01100101",
                "01100011",
                "01101000",
                "01101110",
                "01101111",
                "01110000",
                "01100001",
                "01110100"
   
        };

2. Binaryler dizisindeki her elemanı tam sayıya dönüştürelim.
Daha sonra dönüştürülen sayıyı, tür dönüşümü yaptırarak char formatında yazdıralım

Java:
int sayi = 0;
 
for(int i = 0; i<binaryler.length; i++) {
   
    for(int j = 0; j<binaryler[i].length(); j++) {;
       
           sayi += (binaryler[i].charAt(j) - 48) * (Math.pow(2, binaryler[i].length() - 1 - j))
       
     }
   
    System.out.print((char)(sayi));
    sayi = 0;

}


"- 48" olayı: charAt(indis) işlemi, String dizisindeki, seçili indisi karaktere dönüştürme işlemidir. Lakin ASCII kodunda, sayılar 0'dan başlamaz. 48'den başlar. O yüzden 48 çıkarılır. Yoksa 8 bitlik 2'lik sayı sisteminden 127'den fazla sayı çıkartırız, kod çarpılırız :D.
Şaka bir yana Çince falan karakterler elde ederiz yoksa.
 
Son düzenleme:

Geri
Yukarı