İkili Sistem: Bit, Byte ve Verinin Temsili
Sayıların, metinlerin ve renklerin neden bitlerle temsil edildiğini dönüşüm örnekleri ve yaygın veri hatalarıyla öğrenin.
Bilgisayar aynı donanımla sayı, yazı, fotoğraf ve müzik saklayabilir. Peki elektrik sinyallerinden “A” harfine nasıl ulaşılır? Çözüm, bütün veriyi iki durumdan oluşan ortak bir gösterime çevirmektir.
Bit ve byte nedir?
Bit, 0 veya 1 değerini taşıyan en küçük bilgi birimidir. Byte genellikle sekiz bitten oluşur ve 00000000 ile 11111111 arasında 256 farklı desen üretir. Bitin fiziksel karşılığı kullanılan donanıma göre voltaj seviyesi, elektrik yükü veya manyetik yön olabilir.
İkili sistemde basamakların ağırlığı sağdan sola 1, 2, 4, 8, 16... şeklinde ilerler. 1101₂ sayısı 8 + 4 + 0 + 1 = 13 eder. Onluk 13’ü ikiliye çevirmek için sayıyı kullanılabilecek en büyük ikinin kuvvetlerinden oluştururuz.
Metin nasıl sayıya dönüşür?
Karakter kodlaması, karakterlerle sayılar arasında sözleşme kurar. ASCII sınırlı bir karakter kümesini temsil eder. Unicode dünyadaki yazı sistemlerine kod noktaları atar; UTF-8 bu kod noktalarını bir veya daha fazla byte ile saklayan yaygın kodlamadır.
A karakterinin Unicode kod noktası U+0041, UTF-8 karşılığı ise tek byte 01000001 olur. Türkçe ş karakteri birden fazla byte gerektirir. Bir dosyayı yanlış kodlamayla okumak ç gibi bozuk metinlere yol açar; veri bozuk olmak zorunda değildir, onu yorumlayan sözleşme yanlış olabilir.
Sayıların sınırı neden var?
Unsigned integer, negatif değer taşımayan tam sayıdır. 8 bit ile 00000000–11111111, yani 0–255 aralığını temsil eder. Signed integer hem negatif hem pozitif değer taşır. Modern bilgisayarlar bunun için çoğunlukla two’s complement (ikinin tümleyeni) kullanır.
İkinin tümleyeni, negatif sayıyı ayrı bir eksi işaretiyle değil aynı bitler içinde gösterme yöntemidir. 8 bitte 5, 00000101 olur. -5 üretmek için bitler ters çevrilir (11111010) ve 1 eklenir (11111011). Bu yöntemin önemli faydası, CPU’nun pozitif ve negatif sayılarda aynı toplama devresini kullanabilmesidir. 8 bit signed aralık böylece -128–127 olur; en soldaki bit tek başına “eksi işareti” değildir, bütün desen birlikte yorumlanır.
Overflow, işlemin sonucunun ayrılan bit aralığına sığmamasıdır. Örneğin 8 bit signed sistemde 127 + 1, temsil edilebilir en büyük değeri aşar. Bazı diller sonucu sarar, bazıları hata üretir; dilin davranışı bilinmelidir.
Ondalıklı sayılar genellikle IEEE 754 kayan nokta standardıyla; işaret, üs ve anlamlı basamak parçaları hâlinde yaklaşık saklanır. 0.1 + 0.2 sonucunun tam 0.3 olmaması, bazı ondalık kesirlerin ikili sistemde sonsuz tekrar etmesindendir. Finansal tutarlarda tam sayı olarak kuruş veya ondalık hesabı kesin yapan decimal türü tercih edilmesinin nedeni budur.
Görsel ve ses de sayıdır
Bir piksel kırmızı, yeşil ve mavi kanal değerleriyle temsil edilebilir. Ses ise belirli aralıklarla ölçülen genlik örneklerinden oluşur. Çözünürlük, renk derinliği ve örnekleme hızı arttıkça veri miktarı büyür.
Kendin dene
13, 42 ve 255 sayılarını ikili sisteme çevirin. Ardından UTF-8 ile kaydedilmiş Türkçe bir metnin dosya boyutunu yalnızca ASCII karakterlerden oluşan eşit uzunlukta metinle karşılaştırın.