Dijital Elektronik -4- Sayı Sistemleri Hakkında Bilmeniz Gerekenler - Lojik Prob
Bütün dijital elektronik kitaplarında sayı sistemleri arasından dört tanesinin bahsi geçer. Bunlar ikilik (binary), sekizlik (oktal), onluk (desimal) ve onaltılık (heksadesimal) sayı sistemleridir.
İkilik sayı sisteminin dijital elektroniğin temeli olduğunu ve onluk sayı sisteminin ise bizim kullandığımız sayı sistemi olduğunu biliyoruz. Onaltılık sayı sistemini ise mikrodenetleyiciler üzerinde biraz çalışmış biri çok rahat anlayabilir. On altılık sayı sistemi sadece ikilik sayı sisteminin daha kısa yoldan ve rahat ifade edilebilmesi için kullanılıyordu. Peki bu sekizlik sayı sistemi ne oluyor?, diye sorabilirsiniz.
Ben de uzun zamandır bunun neden zikredildiğini düşünsem de bu sekizlik sayı sisteminin eski zamanlara ait bir kullanımının olduğunu öğreniyoruz. Mikroişlemci ve mikrodenetleyici çağından önce bir bilgisayarın bir odayı doldurduğu dönemlerde bilgisayarlar onaltılık değil sekizlik yani üç bitlik sisteme göre programlanır ve sayılar öyle ifade edilirmiş. Sekizlik sistem ikinin katlarından olduğu için ikilik sistemi daha kısa ifade etme yollarından biri olacaktır.
Onluk sistem yerine neden onaltılık sistemin kullanıldığına dair gelen soruya ise dönüşüm meselesinde cevabı buluruz. Bir ikilik sayıyı onaltılık şekilde ifade etmek için çeviriye ihtiyaç duyarız, hesaplamaya değil. Yani şu sayıya şu karşılık gelir diyerek dörderli ikilik sayı gruplarını isterse yüzlerce hane olsa dahi kolayca çevirebiliriz. Dörderli ikilik sayı grubuna İngilizce “nibble” adı verilmektedir. “Nibble” kelimesine karşılık olarak TDK’nın “Bilgisayar Terimleri Karşılıklar Kılavuzu” eserinde “yarım bayt” ifadesi verilmiştir. Bundan sonra biz de yarım bayt ifadesini kullanacağız.
Yarım bayt adından anlaşılacağı gibi dört bitlik bir veri hücresi olup onaltılık değerde 0-F arası rakamları barındırabilir. Onaltılık sayılarda 0-9 arası sayılar normal rakamlarla ifade edilirken 10-15 arası sayılar harf olarak ifade edilmektedir. Şimdi bu yarım baytlar ve onaltılık sayıların nasıl dönüştürüldüğünü tablodan görelim.
Bu tablo bir gömülü sistem geliştiricisinin muhakkak ezberlemesi gereken bir tablodur. Eğer 32-bit mikrodenetleyici üzerinde çalışıp her satırda 32 kere 1 ve 0 yazmak istemiyorsanız bu tabloyu ezberlemeniz lazımdır.
İkilik sayı sisteminde yapılan bütün matematik işlemlerini onluk sisteme tekrar çevirmek mümkündür. Yani biz onluk sistem değerini çevirip ikilik sistem olarak makineye gireriz veya derleyici program bizim için dönüştürür. Ardından makinede ikilik tabanda işlem yapılır ve sonrasında elde edilen değer tekrar yazılımsal olarak onluk olarak gösterilebilir. Bize onluk olarak gösterilen bütün değerlerin aslında ikilik tabana göre işlem yapılan ikilik değerler olduğunu bilmeliyiz.
İkilik sistemlerin bir avantajı da aritmetik işlemlerin yanında mantıksal işlemlere de tabi tutulabilmesidir. Üstelik bu işlemleri birbiri içerisinde yapmamız da mümkündür. Ayrıca elektriğin var olup olmaması şeklinde ifade edilen sayıları çok kolay bir şekilde elektronik sistemlere aktarabilmemiz mümkündür. Bizim kağıt üzerinde yaptığımız matematiği burada doğrudan uygulamaya koyabiliriz. Analog elektronik fiziğin uygulama alanı olduğu gibi dijital elektronik matematik ve mantığın uygulama alanıdır.
Her bir ikilik sayı hanesine “bit” adı verilir. Bu bitlerin değeri tek başına bir ve sıfırdan ibaret olsa da bizim kullandığımız sayılar gibi basamaklanıp değerleri katlanabilir. Bu durumda normalde onun katı olarak artan değerler ikinin katı olarak artacaktır. Bir biti “bit” olarak ele alan sistemler mantık sistemleridir. Bilgisayar sistemlerinde bit tek başına ele alınırsa bir değeri olmaz. O yüzden bitlerin yan yana dizilmesiyle oluşan en küçük veri hücreleri kullanılmaktadır. Bunun başlıcası 8-bitlik bir sistemde 8 bitten oluşan, onluk 0-255, onaltılık 0x00-0xFF arası değere sahip olabilen bayt ünitesidir.
İkilik sayılarla çalışırken 1’in tamlayanı (complement) ve 2’nin tamlayanı olarak iki ifadeyi sıkça görürüz. Bunu anlamak için şöyle bir örnek verelim. Birin tamlayanı bir bayt dizisindeki bütün bitleri terslemektir. Yani sıfır olan bitleri bir yapacağız ve bir olan bitleri sıfır yapacağız. Örneğin elimizde “1001” sayısı varsa bunun birin tamlayanı “0110” ifadesidir. İkinin tamlayanı ise birin tamlayanı ifadesine “1” eklemekle olur. O da “0111” sayısı için için “1001”, “1100” sayısı için “0100” sayısıdır.
İşaretli yani değerleri negatif ve pozitif olarak ifade ettiğimiz durumlarda bir baytlık verinin en başındaki bit işaret biti olarak kullanılır. Yani o bitte “1” değeri varsa sayı negatif “0” varsa pozitif olarak değerlendirilir. Örneğin 9 sayısının pozitif olarak ifadesi “00001001” iken negatif olarak ifadesi “10001001” olacaktır. Eğer programlamada negatif bir ifade belirtmiyorsak en baştaki işaret biti değer ifade etmekte kullanılacak ve bir baytı -127 ve +127 arası değil 0-255 arası değerle dolduracaktır.
Virgüllü sayılar ise aynı negatif sayılar gibi ikilik pozitif tabanda belli bir formata göre temsil edilirler. Çünkü dijital elektronikte biz gerçekte var olan sayıları kullanabiliriz. Dijital elektronikte ise negatif ya da ondalıklı ifadeler yoktur. O yüzden bunları belli formatlara göre ikilik tabanda temsil etmemiz gerekecektir.
Bu noktaya kadar sayı sistemleri hakkında bilmeniz gereken önemli meselelerden bahsettik. Diğer kitaplarda olduğu gibi bir yöntemle tek tek hepsinden bahsetmek yerine orjinal bir içeriğe sahip olması için farklı yönleri ele aldık. Sonraki başlıkta ikilik sayının kodlanmasından bahsederek konumuza devam edeceğiz.
Next story Dijital Elektronik -5- Binary Kodlama
Previous story Dijital Elektronik -3- Sayı Sistemleri ve İkilik Sayı Sistemi