İkilik sistemde basamak değerleri
Onluk sayılar on rakam kullanır ve her basamak sağındaki basamağın on katı değerindedir: birler, onlar, yüzler. İkilik sistem de aynı şekilde çalışır ama sadece iki rakamla, 0 ve 1 ile; bu yüzden her basamak sağındakinin iki katı değerindedir. En sağdaki bit 1, sonraki 2, sonra 4, 8, 16 diye hep ikiye katlanarak gider.
Sekiz bit bir bayt eder. Bir baytın basamak değerlerini ezberlemeye değer, çünkü dosya boyutlarından ağ maskelerine kadar bilgisayarla ilgili her yerde karşına çıkarlar. Basamak değerleri aslında 2'nin kuvvetleridir: 0. bit 2 üzeri 0, 7. bit 2 üzeri 7 değerindedir. n bitlik bir sayının alabileceği en büyük değer de 2 üzeri n eksi 1'dir; 8 bit için 255, 16 bit için 65.535.
| Bit konumu | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Basamak değeri | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Adım adım ikilikten onluğa
Örnek olarak 11010110'u alalım. Sağdan 1 ile başlayarak basamak değerlerini rakamların üstüne ya da altına yaz. Sonra sadece altında 1 olan basamak değerlerini topla: 128 + 64 + 16 + 4 + 2 = 214. Yöntemin tamamı bu kadar ve her uzunluktaki sayıda çalışır.
Uzun sayılarda bitleri sağdan başlayarak dörderli gruplara ayır ve her grubu önce hex'e, sonra onluğa çevir; ya da sayıyı doğrudan dönüştürücüye yapıştır. Dönüştürücü her uzunlukta çalışır ve yuvarlama yapmaz.
| İkilik | Hesap | Onluk |
|---|---|---|
| 101 | 4 + 1 | 5 |
| 1111 | 8 + 4 + 2 + 1 | 15 |
| 100000 | 32 | 32 |
| 11010110 | 128 + 64 + 16 + 4 + 2 | 214 |
| 11111111 | 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 | 255 |
| 11111101010 | 1024 + 512 + 256 + 128 + 64 + 32 + 8 + 2 | 2026 |
Burada dene: İkilikten Onluğa
Aracın tam sayfasını açOnluktan ikiliğe: ikiye bölme
Ters yönde art arda bölme kullanılır. Sayıyı 2'ye böl, kalanı (0 ya da 1) yaz ve sonuç 0 olana kadar bölümle devam et. Kalanları sondan başa okuyunca ikilik sayıyı elde edersin.
214 için: 214 / 2 = 107 kalan 0, 107 / 2 = 53 kalan 1, 53 / 2 = 26 kalan 1, 26 / 2 = 13 kalan 0, 13 / 2 = 6 kalan 1, 6 / 2 = 3 kalan 0, 3 / 2 = 1 kalan 1, 1 / 2 = 0 kalan 1. Kalanları aşağıdan yukarı okuyunca yukarıda başladığımız sayı olan 11010110 çıkar.
Bir başka yol da sığan en büyük basamak değerini çıkarmaktır: 214 eksi 128, 86 kalır; eksi 64, 22 kalır; eksi 16, 6 kalır; eksi 4, 2 kalır; eksi 2, 0 kalır. Kullandığın her basamak değeri için 1, diğerleri için 0 yaz.
Hex: basamak başına dört bit
Uzun ikilik sayıları okumak zordur, bu yüzden programcılar onları onaltılık (hex) yazar. Hex'te 0 ile 9 ve A ile F olmak üzere on altı rakam vardır ve bir hex basamağı tam olarak dört bite karşılık gelir. Çevirmek için ikilik sayıyı sağdan dörderli gruplara ayır ve her grubu tablodaki karşılığıyla değiştir. 1101 0110, D6 olur; D6 da onlukta 13 x 16 + 6 = 214 eder. Ters yönde de aynı kolaylık var: her hex basamağını dört bitlik karşılığıyla yaz, yan yana koy. Web renklerindeki #FF8800 gibi kodlar da böyle okunur: FF 11111111, yani kırmızı için 255 demektir.
| İkilik | Hex | Onluk | İkilik | Hex | Onluk |
|---|---|---|---|---|---|
| 0000 | 0 | 0 | 1000 | 8 | 8 |
| 0001 | 1 | 1 | 1001 | 9 | 9 |
| 0010 | 2 | 2 | 1010 | A | 10 |
| 0011 | 3 | 3 | 1011 | B | 11 |
| 0100 | 4 | 4 | 1100 | C | 12 |
| 0101 | 5 | 5 | 1101 | D | 13 |
| 0110 | 6 | 6 | 1110 | E | 14 |
| 0111 | 7 | 7 | 1111 | F | 15 |
Negatif sayılar: ikiye tümleyen
Bilgisayarlar negatif tam sayıları ikiye tümleyen biçiminde saklar. Sabit genişlikli bir sayının en üstteki biti negatif bir ağırlık taşır: 8 bitte en soldaki bit 128 yerine -128 değerindedir. Yani 11111111 = -128 + 127 = -1, 10000000 ise -128'dir.
Negatif bir sayının desenini bulmak için pozitif değeri ikilik yaz, her biti ters çevir ve 1 ekle. 8 bitte -6 için: 6, 00000110'dır; ters çevrilince 11111001, 1 eklenince 11111010 olur. Aynı bitler işaretsiz sayı olarak okunduğunda 250 eder; bir değerin işaretli olup olmadığının önemli olmasının nedeni budur. Dönüştürücüde iki okumayı da görmek için İşaretli seçeneğini aç ve bit genişliğini seç.
İkilik kesirler
İkilik noktadan sonraki basamaklar yarım, çeyrek, sekizde bir diye devam eder. 0,101 = 0,5 + 0,125 = 0,625. Basit onluk kesirlerin çoğu ikilikte tam yazılamaz: 0,1, 0011 kısmı sonsuza kadar tekrar eden 0,000110011001100... sayısına dönüşür. Çoğu programlama dilinde 0.1 + 0.2 işleminin tam 0.3 vermemesinin nedeni budur. Onluk bir kesri elle ikiliğe çevirmek için onu 2 ile çarp, tam kısmı (0 ya da 1) not et ve kesirli kısımla devam et: 0,625 x 2 = 1,25 (1), 0,25 x 2 = 0,5 (0), 0,5 x 2 = 1 (1), sonuç 0,101. Dönüştürücü böyle tekrar eden basamakları parantez içinde gösterir, örneğin 0,0(0011).