Sayı tabanı (pozisyonel sayı sistemi) nedir?
Bir sayı sisteminde her basamağın değeri, o basamağın bulunduğu konuma ve sistemin tabanına (radix) bağlıdır. Onluk (decimal) sistemde 243 sayısı aslında (2×100) + (4×10) + (3×1) demektir; her basamak sağdan sola doğru tabanın artan kuvvetleriyle (1, 10, 100, ...) çarpılır ve toplanır. Bu genel kural — pozisyonel gösterim — taban 10 için olduğu kadar taban 2, 8 ya da 16 için de aynı şekilde işler; tek fark kullanılabilecek rakam sayısı ve her basamağın temsil ettiği kuvvetin tabanıdır.
Onluk taban, 0-9 arası 10 rakamdan oluşan ve günlük hayatta kullandığımız insan sayı sistemidir; on parmakla saymaya dayandığı düşünülür. Bilgisayarlar ise verileri farklı bir tabanda, ikilik olarak saklar — bunun nedenini bir sonraki bölümde açıklıyoruz.
İkilik (binary) taban: bilgisayarların dili
İkilik taban 2 kullanır ve doğrudan bilgisayarların donanım seviyesinde veri saklama biçimini yansıtır: her bit (binary digit — 0 ya da 1), 2'nin bir kuvvetini temsil eder. Bir transistörün ya da bellek hücresinin güvenilir biçimde ayırt edebildiği yalnızca iki durum (akım var/yok, yüksek/düşük gerilim) olduğu için, bilgisayarların temel veri birimi ikilik tabanla ifade edilir.
Sekiz bitlik bir grup bir bayt (byte) oluşturur ve 256 farklı değeri, yani 0'dan 255'e kadar bir sayıyı temsil edebilir (2'nin 8. kuvveti 256'dır). KEYDAL'ın sayı tabanı çevirici aracındaki varsayılan örnek olan 255 (ikilik: 11111111) tam olarak bu üst sınırı gösterir — sekiz bitin tamamı 1 olduğunda ulaşılan en büyük değerdir.
Sekizlik (octal) taban ve dosya izinlerindeki yeri
Sekizlik taban 8 kullanır; erken Unix sistemlerinde yaygındı ve bugün hâlâ en çok dosya izni gösteriminde karşımıza çıkar. Bunun nedeni, bir dosya izninin (okuma, yazma, çalıştırma) üç bitlik bir grup halinde ifade edilmesi ve üç bitlik her grubun tam olarak bir sekizlik basamağa (0-7) karşılık gelmesidir — bu da izinleri tek tek bit yerine kompakt, tek haneli sekizlik rakamlarla yazmayı mümkün kılar.
chmod 755 dosya.txt
755 sekizlik gösterimi; sahibine oku-yaz-çalıştır (7 = 111), gruba ve diğer kullanıcılara oku-çalıştır (5 = 101) izni verir.
Örnek: chmod 644 index.html
On altılık (hexadecimal) taban: kompakt bayt gösterimi
On altılık taban 16 kullanır ve programlamada yaygın olarak tercih edilir; çünkü her hex basamağı tam olarak 4 ikili bite (bir nibble) karşılık gelir — bu da ikili veriyi kompakt ve okunabilir biçimde göstermeyi sağlar. Bellek adresleri, #FF5733 gibi renk kodları, MAC adresleri ve hash özetleri bu yüzden hex ile gösterilir: iki hex basamağı tam olarak bir baytı (8 bit) ifade eder.
16 farklı rakam gerektiği için (0-9 yetmez), 10 ile 15 arası değerler harflerle gösterilir: A=10, B=11, C=12, D=13, E=14, F=15. Böylece iki hex basamağıyla 00'dan FF'ye (0'dan 255'e) kadar tek bir baytın alabileceği her değer yazılabilir.
| Onluk | İkilik (4 bit) | Sekizlik | On altılık |
|---|---|---|---|
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
Elle taban çevirme: adım adım örnek ve sık yapılan hatalar
Onluk 202 sayısını ikilik tabana çevirmek için sayıyı sürekli 2'ye böler ve kalanları not ederiz: 202÷2=101 kalan 0, 101÷2=50 kalan 1, 50÷2=25 kalan 0, 25÷2=12 kalan 1, 12÷2=6 kalan 0, 6÷2=3 kalan 0, 3÷2=1 kalan 1, 1÷2=0 kalan 1. Kalanları en sondan başa doğru (aşağıdan yukarıya) okuduğunuzda sonuç 11001010 olur.
Aynı sayıyı on altılık tabana çevirmek için bu kez 16'ya bölme işlemi yapılır: 202÷16=12 kalan 10 (A), 12÷16=0 kalan 12 (C). Kalanları ters sırayla okuduğunuzda CA elde edilir. Sonucu doğrulamak isterseniz tersten gidebilirsiniz: 11001010 sayısında yalnızca 1 olan basamakları, sağdan sola doğru 2'nin kuvvetleriyle (1, 2, 4, 8, 16, 32, 64, 128) eşleştirip toplarsınız: 128 + 64 + 8 + 2 = 202.
- Bit pozisyonlarını yanlış saymak: İkilik bir sayıyı çözerken en sağdaki basamak her zaman 2'nin 0. kuvvetini (yani 1) taşır, bir soldaki 2'yi, ondan bir soldaki 4'ü temsil eder ve bu şekilde katlanarak devam eder. Basamakları hangi yönden sayacağınızı karıştırmak, yanlış bir onluk değer hesaplamanıza yol açar.
- 0x ve 0b önekini atlamak ya da karıştırmak: Kodda
0xöneki bir sayının on altılık,0böneki ise ikilik olarak okunması gerektiğini belirtir. Önek belirtilmeden yazılan tek başına 10 gibi bir değer, bağlama göre onluk 10, ikilik 2 ya da on altılık 16 anlamına gelebilir — hangi tabanda yazıldığı belirtilmeden paylaşılan bir sayı, yanlış tabanda yorumlanmaya açıktır. - Sekizlik ile on altılık basamakları karıştırmak: Sekizlik bir basamak yalnızca 0-7 arası değer alabilir, on altılık bir basamak ise 0-9 ve A-F arası 16 değer alabilir. Sekizlik bir sayıda 8 ya da 9 rakamı, on altılık olmayan bir sayıda G ve sonrası bir harf asla görünmez; böyle bir rakam varsa girilen değer o taban için geçersizdir.
- Uzun değerleri gruplamadan okumaya çalışmak: Bir renk kodu ya da MAC adresi gibi uzun bir on altılık ya da ikilik değeri, basamakları ikişerli (hex) ya da sekizerli (binary bayt) gruplar halinde ayırmadan tek bir blok olarak okumak, hangi kısmın hangi baytı temsil ettiğini takip etmeyi zorlaştırır ve kopyalama hatalarına yol açar.
KEYDAL Sayı Tabanı Çevirici ile pratik yapın
Dört tabanı elle çevirmeyi bilmek faydalıdır, ama günlük kullanımda hız ve doğruluk için bir çeviriciye ihtiyaç duyarsınız. KEYDAL'ın sayı tabanı çevirici aracında ikilik, sekizlik, onluk ve on altılık için dört ayrı alan bulunur; herhangi birine bir değer yazdığınızda diğer üç alan anında güncellenir, böylece dört yönlü çeviriyi tek ekranda görebilir ve elle yaptığınız hesabı da doğrulayabilirsiniz.
İkilik, sekizlik, onluk ve on altılık tabanlar arasında herhangi bir alana yazdıkça anlık çeviri yapın.