Konumsal sayı sistemlerinin mimarisi: birler ve sıfırlardan onaltılık koda
İnsanlık tarihi boyunca medeniyetler sayısız sayısal gösterim geliştirmiştir: antik Sümer ve Babil'in altmışlık sisteminden (günümüzdeki 60 dakikalık saatlerimizi ve 360 derecelik çemberlerimizi hâlâ belirleyen sistem) Mayaların yirmilik takvimine kadar. Ancak modern bilim ve bilişim çağı iki temel eksen üzerinde birleşmiştir: insanın on parmağından türeyen onluk sistem (Taban 10) ve dijital elektroniğin evrensel dili olan ikilik sistem (Taban 2), yani yalnızca birler ve sıfırlar.
1703 yılında Alman matematikçi ve filozof Gottfried Wilhelm Leibniz, çığır açan "Explication de l'Arithmétique Binaire" adlı eserini yayımlayarak akla gelebilecek her türlü matematiksel ifadenin ve mantıksal işlemin yalnızca iki sembolle (0 ve 1) ifade edilebileceğini kanıtladı. Leibniz, bu felsefeyi antik Çin klasiği I Ching (Değişimler Kitabı) heksagramlarından ve "hiçlikten (0) ve birlikten (1) yaratılış" düşüncesinden esinlenerek oluşturdu. İki asır sonra, 1937'de Claude Shannon, yüksek lisans tezinde George Boole'un mantık cebrinin elektrik anahtarları ve röle devreleriyle birebir eşleştiğini ortaya koydu. Günümüz işlemcilerindeki milyarlarca silikon transistör, elektrik akımını geçiren veya kesen (voltaj var/yok, 1/0) mikroskobik anahtarlar olarak çalışır.
Sayı tabanı dönüşümlerinin matematiksel temelleri
Her konumsal sayı sistemi bir taban (radix) b değerine dayanır. dndn-1...d1d0 dizilimindeki herhangi bir sayının değeri, basamak katsayılarının tabanın kuvvetleriyle çarpımlarının polinom toplamı olarak hesaplanır:
Değer = dn × bn + dn-1 × bn-1 + ... + d1 × b1 + d0 × b0
1. İkilik tabandan onluk tabana çevirme (Polinom açılımı)
Bir ikili sayıyı (birler ve sıfırlardan oluşan diziyi) onluk tabana dönüştürmek için sağdan sola doğru her bit, 2'nin ilgili basamak kuvveti (20, 21, 22...) ile çarpılır ve toplanır. Örneğin 11010110₂ baytını ele alalım:
- (1 × 27) + (1 × 26) + (0 × 25) + (1 × 24) + (0 × 23) + (1 × 22) + (1 × 21) + (0 × 20)
- = 128 + 64 + 0 + 16 + 0 + 4 + 2 + 0 = 21410
2. Onluk tabandan ikilik tabana çevirme (Ardışık bölme algoritması)
Onluk bir sayıyı ikilik tabana veya başka bir hedef b tabanına dönüştürmek için kalanların kaydedildiği ardışık tamsayı bölme yöntemi kullanılır:
- Onluk tamsayı, hedef tabana b (örneğin 2'ye) bölünür.
- Bölüm ve elde edilen kalan kaydedilir (ikili sistemde kalan daima
0veya1olur). - Bölüm 0 olana kadar yeni bölüm tabana bölünmeye devam eder.
- Elde edilen kalanlar sondan başa doğru (ters sırada) okunarak nihai ikili sayı oluşturulur.
Alternatif sayı sistemleri: Onikilik (Taban 12) ve Onaltılık (Taban 16) neden üstündür?
Onluk sistem biyolojik nedenlerle yaygınlaşmış olsa da saf matematiksel verimlilik açısından ideal değildir:
- Onikilik sistem (Dozenal / Duodecimal, Taban 12): 12 sayısı tam dört adet aşikar olmayan böleni (2, 3, 4, 6) barındırırken 10 sayısı yalnızca iki bölene (2, 5) sahiptir. Bu sayede 1/3 = 0,412, 1/4 = 0,312 ve 1/6 = 0,212 gibi temel kesirler onikilik sistemde devretmeyen net sayılara dönüşür (1/3 = 0,333...10 yerine). Bu nedenle günümüzde hâlâ yumurtaları düzinelerle sayarız ve bir günü 2 × 12 saate böleriz.
- Onaltılık (Hexadecimal, Taban 16) ve Sekizlik (Octal, Taban 8): 16 = 24 ve 8 = 23 olduğundan bu tabanlar bitleri tam gruplar. 4 ikili bit (bir nibble), tam olarak 1 onaltılık karaktere (
1111₂ = F₁₆) ve 8 bitlik bir bayt ise daima 2 onaltılık karaktere (0x00ila0xFF) karşılık gelir. Bu özellik, onaltılık sistemi bellek adresleri, HTML renk kodları (HEX) ve IPv6 ağları için vazgeçilmez standart yapar. - Base 32 ve Base 36: 2FA TOTP gizli anahtarları, geohash coğrafi koordinatları ve kısa URL bağlantıları gibi kompakt veri aktarımlarında yaygın olarak kullanılır.
Negatif sayıların temsili: İkiye tümleyen (Two's Complement)
Bilgisayar işlemcilerinde eksi işareti için fiziksel bir donanım yoktur; negatif tamsayılar ikiye tümleyen yöntemiyle temsil edilir:
- N bitlik bir yazmaçta en soldaki en anlamlı bit (MSB), negatif ağırlığa sahiptir (-2N-1).
- 8 bitlik işaretsiz yazmaçta:
11111111₂ = 255. - 8 bitlik işaretli ikiye tümleyende:
11111111₂ = -128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = -1. - Bir sayının işaretini tersine çevirmek için tüm bitler ters çevrilir (NOT) ve 1 eklenir. Bu sayede işlemci (ALU), çıkarma işlemini toplama devreleriyle aynı hızda gerçekleştirir.
Mühendislik ve yazılım geliştirmede pratik uygulamalar
İkili mantık ve taban dönüşümleri bilişim mühendisliğinin temel taşıdır:
- IP alt ağ maskeleme (Subnetting): IPv4 adresleri (örn.
192.168.1.1) ve alt ağ maskeleri (örn./24 = 255.255.255.0 = 11111111.11111111.11111111.00000000₂), yönlendiricilerde doğrudan donanımsal bit düzeyinde mantıksal VE (AND) işlemleriyle çalışır. - Mikrodenetleyici donanım kayıtları: Gömülü sistemlerde (ARM, AVR, ESP32), giriş/çıkış pinleri ve donanım bayrakları bit kaydırma operatörleri (
<<,>>,AND,OR) ve bit maskeleriyle yönetilir. - UTF-8 bayt dizilimi: Web üzerindeki tüm evrensel karakterler ve emojiler ikili bayt kalıplarıyla çözümlenir.