Dijital Elektronikte İkilik (Binary) Sayılar

İstek üzerine gömülü sistemlerde ve dijital elektronikte temel kavramları yazmaya başladık. Her ne kadar yeterli kaynak olduğuna inansak ve temel elektronik ve dijital sistemler hakkında MEGEP modülleri de mevcut olsa da biz kendi uslubumuzla farklı bir kaynak ortaya koymaya çalışacağız. Kaynak olarak hiçbir Türkçe içeriği kullanmadığımızı tekrar belirtelim.

Gömülü sistemler ve mikrodenetleyiciler dijital elektronik adlı üst kategoriye ait dallar olduğu için öncelikle dijital elektroniğin temellerini öğrenmemiz bütün dijital sistemleri öğrenmemizde bize yardımcı olacaktır. O yüzden muhakkak temel teorik bilginin öğrenilmesi gereklidir. Ülkemizde daha temel bilgiyi öğrenmekte ve öğretmekte sıkıntı yaşanmaktadır. Pek çok kitabın ve yayının giriş seviyesinde olduğunu ve biraz üst seviyede olduğu zaman okuyacak adam bulunmadığını görmekteyiz. Üstelik bazı kaynaklar giriş seviyesinden başlayıp öğrenciyi belli bir seviyeye çıkaracak nitelikte değil.  O kadar çabaya rağmen sürekli giriş seviyesinde kalmak en çok muzdarip olduğumuz durumlardan biridir.

Dijital elektronik analog elektronik gibi zor değildir. Analog elektronikte bir sürü hesap ve formül yani matematik ve fizik gerekli iken dijital elektronikte mantık gereklidir. Mühendislik fakültelerinde mantık dersi var mı bilmiyorum ama yurtdışında üniversitelerde dört yıllık mantık (logic) bölümü bile bulunmaktadır. Sanıldığı gibi iyi programcı olmak için iyi matematik bilgisi şart değildir. Bütün temel mantık üzerine kurulu iken matematik ileri seviye olarak ancak üst seviye diyeceğimiz (oyun motoru gibi) hesaplamalarda kullanılmaktadır. Algoritmaların temeli mantık üzerinedir. Bu durumda mantık öğrenmenin dijital sistemleri kavramada ve yazılım yazmada oldukça faydası olacaktır. Ne yazık ki mühendislik fakültelerinde mantık gibi bir bilimden öğrenciler haberdar olmadığı için iyi programlamayı iyi matematik bilmekte görmektedirler.

Dijital elektronik ne kadar aritmetik ve mantık işlemleri üzerine kurulu olsa da bu işlemlerin yapılabilmesi için verinin bulunması şarttır. Bir veri olmadan bu işlemleri yapmamız mümkün değildir. Elektronik bir sistemde ise verilerin ne şekilde ifade edileceğini az çok kestirebiliriz. Elektrikten başka bir şeyle ifade edilecek değildir. Elektrik bilgiyi nasıl ifade edebilir diye düşünebilirsiniz. Bir lambanın yanması da yanmaması da bir bilgi ifade etmektedir. Lamba yanıyorsa “açık” yanmıyorsa “kapalı” deriz. Bu bizim için bir şey ifade ediyorsa aynı şekilde transistörde elektrik varsa “açık” yoksa “kapalı” konumda olabilir. Açık veya kapalı olması iki farklı durumu ifade ettiği için temel mantık işlemlerinde çok rahat kullanılabilir. Elektrik var ise lamba yanar, elektrik yoksa lamba yanmaz. “Var” ve “Yok” kavramları birbirlerine eğer, ise, öyleyse, büyükse, küçükse, değilse gibi bağlarla bağlanabilir. Burada “var” elektriğin olması “yok” ise elektriğin olmamasıdır. Burada mantık işlemlerini sayı ifade etmeden bir şekilde yapsak da bu ikilik durumu sayı haline getirip belli sayı ve harfleri temsil edebilir miyiz, diye sorabiliriz. Bizim zaten hali hazırda kullandığımız rakamlar belli bir varlık veya yokluk ifadesini temsil etmekteydi. Sıfır (0) dediğimizde “Yok” demekti. Sıfır bir varlık veya sayı ifade etmez. O halde elektriğin olmadığı konumu Sıfır (0) olarak ifade etmemiz mümkündür. Bir (1) ise sayı ifade etmenin yanında varlığı da ifade eder. Sıfırın zıttı olarak düşünebiliriz. Bu durumda elektriğin var olduğu konumu bir (1) rakamı ile ifade edebiliriz. Bu rakamları ise onluk tabanda yaptığımız gibi basamak sıralamasına koyarsak belli bir büyüklüğü ifade edebiliriz. Buna binary (ikilik) sayılar denmektedir.

Bilgisayar sistemlerindeki matematiğin bizim gördüğümüz ve aslında olan olmak üzere ikiye ayrıldığını anlamış olmalısınız. Biz elektronikte ve gömülü sistemlerde sanalla değil gerçekle daha çok ilgilenmekteyiz. Bir bilgisayar programı yazarken ikilik veya onaltılık sayılarla pek işimiz olmasa da donanıma yakın olduğumuz sistemlerde aslında onluk sayılarla pek işimiz olmamaktadır. Bütün bilgisayar sistemleri “Var” ya da “Yok” tabanı üzerine kurulduğu için çoğu özellik ikinin katları olarak ifade edilir. Örneğin 8-bit, 16-bit, 32-bit işlemcilerden bahsetsek de asla 20-bit işlemciden bahsedemeyiz. “Var” ya da “Yok” ifadesini içinde bulunduran bir hücreye “Bit” adı verilmektedir. Dijital elektronikte en küçük birim olarak bit ifadesini kullanırız. Hafıza birimlerinde de 32, 64, 128, 256, 512 olarak ikinin katları şeklinde artmaktadır. 2 ^ n olarak da ifade etmemiz mümkündür.

Desimal yani onluk sayıların bizim her zaman kullandığımız sayılar olduğunu biliyorsunuz. Yalnız bu iki sayı sisteminin birbirine nasıl dönüştürüleceği konusunda kafanızda bir soru işareti yer almalı. Sonuçta günlük hayatta kullandığımız bir sayıyı dijital sistemde ifade edebilmek, dijital sistemde kullanılan bir sayıyı da günlük hayatta kullanabilmek için bunları birbirine çevirmemiz gereklidir.

Onluk bir sayıyı ikilik bir sayıya çevirmek istediğimiz zaman sırasıyla ikiye bölerek kalanları sırayla yazmamız gereklidir. Bir örnekle nasıl olduğunu gösterelim ve ne kadar basit olduğunu görün.

İşlem Sonuç Kalan
27 / 2  13 1 (Üst Bit / MSB)
13 / 2  6 1
6 / 2  3 0
3 / 2 1 1
1 / 2  0 1 (Alt Bit / LSB)

Yukarıda 27 sayısını ikilik tabanda çevirimini yaptık. Sonucumuz üst bitten itibaren “11011” olacaktır.  İstersek çevirici programları kullanıp hazır olarak da yapabiliriz. Aşağıdaki kullanabileceğimiz pek çok programdan biridir.

https://www.rapidtables.com/convert/number/decimal-to-binary.html

İkilik sistemden onluk sisteme çevirmek ise daha basit olmaktadır. Bilindiği üzere ikilik sistemde basamaklar ikinin katlarını temsil ediyordu. Yani bir bitin önüne bir bir daha koymak alt biti ikiye katlamak gibi olmaktadır. Örneğin 1111 sayısı 0111 sayısının tam iki katıdır. Son basamaktaki bir sayısını ikinin katı olmadığı için sonradan ilave ederiz.  Buna göre ikinin üslerini birbiriyle toplayarak onluk tabandaki sayıyı bulabiliriz. Şimdi “11001111” sayısının onluk tabandaki karşılığını bulalım

2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
1 1 0 0 1 1 1 1
128 64 0 0 8 4 2 1

Şimdi elde ettiğimiz sayıları toplayalım.

128 + 64 + 0 + 0 + 8 + 4 + 2 +1 = 207 

2’nin üsleri yerine 128, 64, 32… diye sıralayıp hepsine karşılık gelen bitlerle karşılaştırarak toplayıp yine aynı sayıyı elde edebilirsiniz.  İkilik sistemde her basamak değeri ikiye katlayacaktır. Aynı onluk sistemde yüzler basamağının onlar basamağının on katı olması gibi düşünebiliriz. Oldukça basit bir matematik hesabı olduğundan daha fazla ayrıntıya girmeyeceğiz.

Sonraki makalelerde ikilik sayılar üzerinden yapılan aritmetik işlemleri ve onaltılık tabandaki sayıları anlatacağız.

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

4 Responses

  1. Yusuf ÖZKUL dedi ki:

    Öncelikle es-selemü aleyküm Gökhan bey. Sitede ki ehemmiyetli yazılarınızdan birkaçını okuyunca bu ülkenin sizin gibi insanlara ihtiyacı olduğuna kanâat getirdim. Güzel eserleriniz için çok teşekkür ederim. Yazılarınızı büyük bir ilgiyle okuyarak takip edeceğim inşaAllah…Selametle kalmanız dileğiyle…

  2. Murat Özsert dedi ki:

    Sevgili Gökhan bey
    Elinize sağlık. Bir düzeltme yapmama izin verin. Decimal – binary dönüşümünde LSB ve MSB nin yerleri ters olmuş. Sayı seçimi 27 yerine 26 olsa mesela daha anlaşılır olur.
    Kolaylıklar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.