1/0 Binary Digit (Bit)

  Herkesin duyduğu ancak genelde tam kavrayamadığı bir söylemdir bilgisayar dünyasında her şeyin bir ve sıfırlardan meydana geldiği... Diğer bir ifade de sayısal (dijital) ortamdır. Aslında sayısal ifadesi biraz ipucu veriyor. Gelin bu dünyaya bir bakış atalım...

1/0 Binary Digit (Bit) Konu Resmi

 Biz insanlar günlük hayatta on tabanındaki desimal (decimal) sayı sistemini kullanırız. Ancak bilgisayarlar iki tabanındaki ikili (binary) sayı sistemini kullanır. İkili sayı sisteminde sadece "0" ve "1" rakamları kullanılır ve doğal olarak en büyük rakam bir 'dir. Bir 'den büyük bir sayının ikili sistemdeki ifadesi için basamak sayısı arttırılır. 

1/0 Binary Digit (Bit) decimal tablosu

 Sayı büyüdükçe (on tabanındaki) bu sayıyı ikili sistemdeki karşılığı ifade edilirken basamak sayısı hızlıca artar bu nedenle ikili sayı sisteminin insanlar tarafından algılanması oldukça güçtür. 

Miktar, Sayı, Adet, Rakam Tablosu

 Aslında sayı kavramı azlık/çokluk, miktar, seviye, büyüklük gibi durumları belirten soyut bir kavramdır. Günlük hayatta on tabanındaki sayı sistemini kullanmamızın nedeni algılanmasının kolay olmasından dolayı süregelen bir alışkanlıktır. 

 Bilgisayarlarda ikili sistemin kullanılmasının temel sebebi bu sayı sisteminin elektriksel ifadesinin kolay olmasıdır. Sinyal(voltaj) var durumu "1" değerini, sinyal yok durumu "0" değerini ifade eder. Bu nedenle ikili sayı sisteminin kullanılması bir zorunluluktur denilebilir. Bilgisayar elektronik bir cihaz olduğuna göre ikili sayı sistemi ile çalışan bilgisayar elektronik donanım yönünden sayısal (digital) elektronik alanına girer.

 Ek bilgi olarak günümüz itibari ile biraz deneysel/teorik/utopik olan Kuantum bilgisayar lar adından da tahmin edilebileceği gibi her bitin "1","0"," 1 veya 0 ihtimali" şekinde üç farklı durumu olduğundan yola çıkarak karmaşık hesaplamalar yapar. Ancak konumuzun dışında kaldığı için sadece duymuş olun ve kafanızı karıştırmayın...

 İkili sayı sisteminde ki sayı basamaklarına Bit (binary digit) denilmektedir. Yukarıdaki tabloda basamak sayısından bahsetmiştik. ikili bir sayının kaç basamaklı olduğu bit sayısı ile ifade edilir. Örneğin iki tabanındaki "1011" için 4 basamaklı ifadesi yerine 4bitl ik sayı/değer ifadesi kullanılır. 

1/0 Binary Digit (Bit)

 4 Bit kapasiteli basit bir sistem tasarlayalım. 4 adet lamba kullanarak "1" ve "0" değerlerini gösterelim. lambanın yanıyor olması "1", lambanın sönük olması "0" değerini temsil etsin. 

4bitlik sayı için durum tablosu

  4 Bit kapasiteli sistemimiz en fazla 16 farklı durumu ifade ederken en yüksek 15 (desimal) sayı değerine sahip olabiliyor. İkili bir sistemin aldığı en yüksek değer ve alabildiği farklı değer sayısı (çözünürlük olarak da ifade edilir) aşağıdaki formül ile hesaplanır. 

bit hesabı

 Bu sistemde 4 bit kullanacağımıza baştan karar vermiştik ve her bit için bir lamba olmak üzere 4 adet lamba kullandık. Burada önemli olan ve iyi anlamamız gereken konu her bit için bir elektriksel donanım kullanılmış olmasıdır. Bilgisayarda da durum böyledir. Her bir bit in fiziksel karşılığı olarak bir donanım/elektronik devre vardır. Bu nedenle tüm bilgisayarların kapasitesi belirli limitler dahilindedir. 

 4 bitlik sistemimizdeki  herhangi iki sayıyı ikili olarak yan yana yazalım. "10110111" şeklinde bir ikili verimiz var ancak bu 8 bitlik bir değer mi yoksa iki adet 4 bitlik değer mi ayırt edemiyoruz. Bu karışıklığın önüne geçmek için bilgisayar gelişiminin erken dönemlerinde 8 Bitlik dizilimler bir standart olarak kabul edilmiştir. Günümüzde tüm bilgisayarlar 8 Bit değerler üzerinden çalışırlar. Söz konusu 8 Bit  değer veri birimi olan 1 byte 'a tekabül eder. (bayt olarak okunur)

bit byte dönüşümü

 Byte kavramının bir diğer ifadesi ise bilgisayarda erişilebilir en küçük veri birimini şeklinde yapılır. Bilgisayardaki tüm bilgiler 1 'er byte 'lık parçaçıklar halinde 1 ve 0 dan oluşan bitler içerisinde saklanır. Biz 3 sayısını saklamak istersek bu değer bilgisayarda 8 bit olarak "00000011" şeklinde saklanır. 8 Bit (2 üzeri 8 den) 256 farklı değer alarak en fazla 255 sayısını saklayabilir. 255 den büyük sayılar 16bit (2byte) olarak saklanırlar. (2 byte 2^16=65536 değer alır)

 8 bitlik verilerin aldığı 0-255 arası değerler bilgisayar tarafından ihtiyaca göre çeşitli şekillerde yorumlanır. Verilerin yorumlanması bir çeşit kodlama/şifreleme gibi düşünülebilir. İhtiyaç konusu her şey 1 ve 0 olacak şekilde dönüştürülür. Örneğin alfabede bulunan harf, rakam, noktama işaretleri, matematiksel sembollere bir kod numarası verilmiştir. "A" karakterinin kod numarası 65 tir. Bu değer "01000001" ikili verisi şeklinde bilgisayarda işlem görür. Klavyeden "A" tuşuna basıldığında bilgisayar içerisinde "01000001" verisi oluşturulur. Bu veri tekrar insan tarafından okunması gereken bir monitör, yazıcı gibi çıktı aygıtı üzerinde tekrar "A" karakterine dönüştürülür. Karakter kodları bir standart olarak belirlenmiş ve ASCII tablo adı altında yayınlanmıştır. 

 Örneğin "01000001" verisi, sayı olarak kullanılacak ise doğrudan on tabanındaki karşılığı olan 65 olarak işlem görür. Alfabetik bir harf olarak yorumlanır ise "A" karakterine eş değerdir. Aynı veri bir renk tonu veya özel bir sistem komutu olarak yorumlanabilir. 

 Bir deneme yaparak bu durumu görebilirsiniz. Notepad i açıp sadece "A" harfini yazıp dosyayı kaydedelim.

Dosyanın kapladığı alan

 "A" harfi "01000001" 8 bit olarak kaydedildiği için 1 byte boyutuna sahip... Normal şartlar altında 1/0 verilerini bir kullanıcının görmesi gerekmediği için doğrudan bu verileri göremeyiz. Ancak yine de görmek istiyorsak bir hex editör programı bize yardımcı olur. Hex editörler verileri bilgisayarın işlediği ham hali ile görüntülememizi sağlayan yardımcı programlardır. İsterseniz HxD adlı ücretsiz hex editör programını kendi sitesinden veya buraya tıklayarak yükleyebilirsiniz. 

Hex editör kullanımı

 Hex editör ile notpad belgemizi açtığımızda "01000001" verisini "65" değerini "ve "A" karakterini görebiliyoruz.

 İkili verinin nasıl bir alfabetik karaktere dönüştüğünü örneklemiş olduk. Bunun gibi başka dönüşümler de söz konusudur. Bu dönüşümler sistem(işlemci) komutları, renk tonu, ses seviyesi vs gibi çeşitli, daha çok bilgisayarın iç yapısında kullanılan işlere yararlar. Ayrıca daha çok programcıların aşina olduğu tam sayı, negatif sayı, ondalıklı sayı dönüşümleri de sıkça yapılır. 

 Başka bir örnek verelim. Notepad programı ikili verilerin karakter karşılıklarını gösteren bir programdır. Notepad ile bazı dosyaları açtığınızda okunaksız/anlamsız karakterler görürsünüz. Bu durumdan anlaşılması gereken açılan dosyadaki ikili verilerin karakter kodu değil de başka bir amaç için veriler barındırıyor olmasıdır. Tüm ikili verilerin karakter karşılı yoktur ve notepad tesadüfen karşılığı olan verileri karaktere dönüştürerek anlamsız, karışık karakter/semboller görüntüler. 

 Ascii tabloda Türkçe karakterler yoktur. Türkçe, Arapça, Çince vs. gibi İngiliz alfabesinde olmayan karakterler için daha gelişmiş (unicode gibi) kodlama sistemleri kullanıldığını da ek bilgi olarak ekleyelim. 

Hex Kodu 

 Tam ikili sayıyı anlıyoruz derken karşımıza birde hex kodlama çıkıyor. Hex kodu 16 lı sayı sistemini kullanır. Bilgisayar hex kodu ile çalışmaz ancak sadece ikili verilerin okunmasını kolaylaştırmak için ikili veri kümeleri hex kodu ile gösterilir. Her 8bit/1Byte lık veri iki karakterlik hex sayısına/koduna denk gelir. Yukarıdaki hex editör ekran görüntüsünde "A" karakteri "41" değeri görülmektedir. Başka bir deneme daha yaparak HEX in nasıl kolaylık sağladığına bakalım.

Dosya içeriğinin hex editör ile görüntülenmesi

"01 Adana" yazısını oluşturan karakterlerin ikili verisi şu şekildedir:

"00110000 00110001 00100000 01000001 01100100 01100001 01101110 01100001"

 Birkaç karakterden oluşan bir veri bile oldukça uzun bir gösterime neden oldu. Hex editörün amacının karakter gösterimi değil de ham veri göstermek olduğunu hatırlatarak herhangi bir veriyi 1/0 ile bu şekilde göstermek oldukça karmaşık olacaktır. Bir çözüm verilerin üç basamaklı tamsayı(desimal) karşılıklarını göstermek olurdu ki bilgisayarlarımız ip adresi benzer şekildedir. 255 i aşmayacak şekilde "192.168.1.1" gibi yazılır. Ancak desimal kullanımında bir sıkıntı var üç basamaklı sayı 999 a kadar artarken veri kısmında 255 in üzeri yok... Bu durumda diğer bir çözüm olan iki basamaklı hex kullanılır. İki basamaklı hex in aldığı en büyük değer olan "FF" sayısı "11111111" ve 255 'e eşittir. On altı iki nin katı olduğundan tam eşleşme sağlanır. 

  "01 Adana"  karakter dizemizin ham verisi hex olarak "30 31 20 41 64 61 6E 61" şeklinde gösterilir. Hex kullanımın temel amacı ham verinin okunmasını kolaylaştırmaktır. 

 Son olarak birden çok sayı sisteminin aynı anda kullanılması gerektiği durumlarda sayının sağ alt köşesine veya parantez içinde sayı sistemi yazılarak karışıklık önlenir. Aşağıdaki eşitlikleri inceleyiniz. 

Farklı tabanlardaki sayıların gösterimi

Farklı tabanlardaki sayıların gösterimi

 Konu biraz uzunca oldu. En temel kuralları en basit hali ile aktarmaya çalıştım. İnsanoğlu olarak 10 lu sayı sistemine o kadar alışmış durumdayız ki ikili sayı sistemini ile çalışmanın gerekliliklerini bir defada anlamayabiliriz. Kafanız karıştıysa panik yapmayın. Tekrar okuyun, başka kaynaklardan okuyun. Anlamak için kendinize zaman tanıyın...

Yorum Gönder

Daha yeni Daha eski