İçeriğe geç
academia.sh

Ders 01 / 16

İkilik Sayı Sistemi

Konum değerine dayalı sayı sistemleri, ikilik gösterim ve tabanlar arası dönüşüm.

İçindekiler

Bir bilgisayarın belleğinde duran her şey — bu ders metni, bir fotoğraf, çalışan programın kendisi — aynı türden bir nesnedir: iki durumlu anahtarlardan oluşan bir dizi. Bu dersin sorusu şudur: iki durumdan başka bir şey tutamayan bir ortamda sayılar nasıl yazılır?

Yanıt, aslında günlük hayatta kullanılan sayı sisteminin daha genel bir kuralının özel bir hâlidir. Bu yüzden ikilik sisteme geçmeden önce, onluk sistemin ne yaptığına dikkatle bakmak gerekir.

Konum Değeri

Onluk sistemde 4703 yazıldığında dört ayrı simge yan yana konur, ama ifade edilen değer bu simgelerin toplamı değildir. Her simgenin katkısı, bulunduğu konuma bağlıdır:

4703=4×103+7×102+0×101+3×1004703 = 4 \times 10^3 + 7 \times 10^2 + 0 \times 10^1 + 3 \times 10^0

Bu düzene konum değerli gösterim (positional notation) denir. Üç bileşeni vardır: bir taban (base) bb, 00’dan b1b-1’e kadar bb adet rakam, ve sağdan sola artan üsler. Genel olarak, rakamları dn1dn2d1d0d_{n-1} d_{n-2} \dots d_1 d_0 olan bir sayının değeri şudur:

i=0n1di×bi\sum_{i=0}^{n-1} d_i \times b^{i}

Onluk sistemin özel bir yanı yoktur; tabanın on olması, elde on parmak bulunmasının tarihsel bir sonucudur. Kural her taban için aynı işler. Taban ikiye indirildiğinde rakam kümesi {0,1}\{0, 1\}’e daralır — ve bu, iki durumlu bir donanımın doğrudan karşılığıdır.

İkilik Gösterim

İkilik (binary) sistemde taban 22, rakamlar 00 ve 11’dir. Tek bir ikilik rakama bit denir; sözcük “binary digit” ifadesinin kısaltmasıdır. Konum değerleri ikinin kuvvetleridir:

10112=1×23+0×22+1×21+1×20=8+0+2+1=111011_2 = 1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 = 8 + 0 + 2 + 1 = 11

Alt simge, sayının hangi tabanda yazıldığını bildirir. Bu belirtme gereklidir: 1011 dizisi onluk okunursa bin on bir, ikilik okunursa on bir eder. Aynı simge dizisinin farklı tabanlarda farklı değerler taşıması, ilerideki derslerde daha sert bir biçimde karşınıza çıkacaktır — aynı bit dizisi, yorumlayana göre bir sayı, bir harf veya bir komut olabilir.

İlk on ikilik sayı, karşılıkları ile birlikte:

Onluk İkilik Onluk İkilik
0 0 5 101
1 1 6 110
2 10 7 111
3 11 8 1000
4 100 9 1001

Bir örüntü göze çarpar: sayı her ikinin kuvvetine ulaştığında bir basamak daha gerekir. Onluk sistemde 9’dan 10’a geçerken olan şeyin aynısı, ikilik sistemde 1’den 10’a geçerken olur.

İkilikten Onluğa

İkilik bir sayıyı onluğa çevirmek, tanımı doğrudan uygulamaktır: bitlerin konum değerlerini toplayın. Değeri 11 olan bitlerin konum değerlerini toplamak yeterlidir, çünkü 00 olanların katkısı yoktur.

1101012=32+16+4+1=53110101_2 = 32 + 16 + 4 + 1 = 53

Burada sağdan sola konum değerleri 1,2,4,8,16,321, 2, 4, 8, 16, 32’dir; değeri 11 olan bitler 0.0., 2.2., 4.4. ve 5.5. konumlardadır.

Onluktan İkiliğe

Ters yön için tekrarlı bölme kullanılır. Sayıyı ikiye bölün, kalanı yazın, bölümle devam edin; bölüm sıfıra ulaşınca kalanları ters sırada okuyun.

5353 için:

Bölme Bölüm Kalan
53÷253 \div 2 26 1
26÷226 \div 2 13 0
13÷213 \div 2 6 1
6÷26 \div 2 3 0
3÷23 \div 2 1 1
1÷21 \div 2 0 1

Kalanlar aşağıdan yukarı okunduğunda 1101012110101_2 elde edilir; bir önceki bölümde hesaplanan değerle tutarlıdır.

Yöntemin neden çalıştığı, konum değeri tanımına bakılınca görülür. Bir sayının ikiye bölümünden kalan, o sayının en sağdaki bitidir: çift sayıların son biti 00, tek sayıların son biti 11’dir. Bölüm alındığında sayı bir basamak sağa kaydırılmış olur ve aynı soru bir sonraki bit için sorulur.

Bit, Bayt ve Değer Sayısı

Tek bir bit iki durum ayırt eder. İki bit dört, üç bit sekiz durum ayırt eder. Genel olarak nn bit ile

2n2^n

farklı örüntü yazılabilir. Bu, temsil kapasitesinin üst sınırıdır ve donanımdan bağımsız bir sayma gerçeğidir: 8 bitle 256 farklı örüntü vardır, 257’nci örüntü yoktur.

Sekiz bitlik gruba bayt (byte) denir. Bayt, belleğin adreslenebilen en küçük birimidir; işlemci tek bir biti değil, en az bir baytı okur. Bir bayt işaretsiz tam sayı olarak yorumlandığında 00 ile 255255 arasındaki değerleri taşır: en küçük örüntü 00000000, en büyüğü 11111111 yani 281=2552^8 - 1 = 255.

Daha genel olarak, nn bitlik işaretsiz bir tam sayının aralığı 00 ile 2n12^n - 1 arasıdır. Aradaki 1-1, sıfırın da bir örüntü harcamasındandır. Yaygın genişlikler ve sınırları:

Genişlik Örüntü sayısı İşaretsiz en büyük değer
8 bit 256 255
16 bit 65.536 65.535
32 bit 4.294.967.296 4.294.967.295
64 bit 1,8×1019\approx 1{,}8 \times 10^{19} 26412^{64} - 1

Bu tablo ilerideki derslerin sık başvuracağı bir sınırı içerir. Bir değişkenin genişliği, o değişkenin tutabileceği en büyük değeri belirler; sınır aşıldığında sayı büyümez, temsil bozulur. Taşma (overflow) davranışı, işaretli sayıları ele alan derste ayrıntılandırılacaktır.

Dönüşümü Programla Görmek

Aşağıdaki program, bu derste elle yapılan iki dönüşümü yürütür ve sonuçlarını yerleşik işlevlerle karşılaştırır.

def onluktan_ikilige(sayi: int) -> str:
    """Negatif olmayan bir tam sayının ikilik gösterimini döndürür."""
    if sayi == 0:
        return "0"
    bitler = []
    while sayi > 0:
        bitler.append(str(sayi % 2))   # kalan: en sağdaki bit
        sayi //= 2                     # bölüm: bir basamak sağa kaydırma
    return "".join(reversed(bitler))


def ikilikten_onluga(gosterim: str) -> int:
    """İkilik gösterimi konum değerlerini toplayarak çözer."""
    deger = 0
    for bit in gosterim:
        deger = deger * 2 + int(bit)
    return deger


print(onluktan_ikilige(53))          # 110101
print(ikilikten_onluga("110101"))    # 53
print(bin(53), int("110101", 2))     # 0b110101 53

ikilikten_onluga işlevindeki deger * 2 + int(bit) satırı, konum değeri tanımının soldan sağa okunan biçimidir: her yeni bit, o ana kadar birikmiş değeri bir basamak sola kaydırır ve kendi katkısını ekler.

Python’un yerleşik bin işlevi ikilik gösterimi 0b önekiyle verir; int işlevinin ikinci parametresi ise okunacak tabanı belirtir. Bu önek yalnızca bir yazım sözleşmesidir, sayının kendisinin parçası değildir.

Özet

  • Konum değerli gösterimde bir rakamın katkısı, taban üssü ile konumundan belirlenir; onluk sistemin ayrıcalığı yoktur.
  • İkilik sistemde taban 22, rakam kümesi {0,1}\{0, 1\}’dir; tek bir ikilik rakama bit denir.
  • İkilikten onluğa geçiş, değeri 11 olan bitlerin konum değerlerini toplamaktır; ters yön tekrarlı bölmenin kalanlarını ters sırada okumaktır.
  • nn bit ile tam olarak 2n2^n farklı örüntü yazılabilir; işaretsiz yorumda en büyük değer 2n12^n - 1’dir.
  • Sekiz bitlik gruba bayt denir ve bellek bayt düzeyinde adreslenir.

Sonraki Adım

İkilik gösterim donanıma sadıktır, ancak insan gözü için elverişsizdir: 32 bitlik tek bir değer, hata yapmadan okunması güç bir sıfır–bir dizisidir. Sonraki ders, aynı bit örüntüsünü daha az simgeyle ve bit sınırlarını bozmadan yazmayı sağlayan onaltılık tabanı ele alacak; o dersle birlikte, kurs boyunca tekrar tekrar başvurulacak somut bir örnek de kurulacaktır.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat