Dijital Elektronik -6- Dijital Aritmetik

Mantık kapılarına gelmeden önce ikilik tabanda aritmetik işlemlerin nasıl yapıldığından kısaca bahsedelim. Bu noktaya kadar bahsettiğimiz konular işin en temeli olduğu için ne kadar sizi sıkmamak için kısa kesmeye çalışsak da önemli noktaları kaçırmamanız için çalışmaktayız. Mikroişlemci veya mikrodenetleyicilerle çalışırken oturup ikilik tabanda aritmetik yapmadığımız halde bunları anlayabilmek için dijital aritmetik hakkında az da olsa bilgi sahibi olmamız lazımdır.

Temel olarak ikilik tabanda yapılan toplama, çıkarma, çarpma ve bölme işlemleri olan dijital aritmetiği anlamak oldukça kolaydır. Mikroişlemci mimarisini anlatırken yapılan çıkarma ve toplama işlemlerinin aritmetik komutlar arasında en temel işlemler olduğundan bahsetmiştik. Bu çıkarma ve toplama işlemleri ikilik seviyede olduğundan mantık kapıları ile de mantıksal olarak yapılabilmektedir. Biz şimdilik işin bizim tarafımızdan nasıl yapıldığını göreceğiz ve ilerleyen konularda dijital sistemlerde bu işlerin nasıl yapıldığını anlatacağız.

Toplama İşlemi

İkilik tabanda basit bir toplama işleminde muhtemel sonuçlar aşağıdaki gibidir.

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 (Elde var 1) 
1 + 1 + 1 = 1 (Elde var 1) 

Bu sonuçları elde etmek için onluk tabanda kullandığımız toplama işleminin aynısını uygulamamız yeterlidir. 1 ve 1’in toplamnının sıfır olmasından başka bir seçenek yoktur çünkü ikilik tabanda 2 diye bir sayı yoktur. Bu durumda mecburen basamak sıfırlanacak ve elde değerini elde edeceğiz. Elde değeri de aynı şekilde en fazla 1 olabilmekte ve bir sonraki basamağa aktarılmaktadır. Mikroişlemcilerde iki değerin toplandığını görsek de en son işlemde üç bitin toplandığını görmekteyiz. Bu üç bitin bir biti elde değeri olabilir ve eldeli 1+1 durumunda sonucu gösterir. Datasheetlerde elde ifadesine “carry” dendiğini görebilirsiniz. Mikrodenetleyiciler üzerinde çalışırken bu “carry” bitinin ALU tarafından bize bildirildiğini anlatmıştık.

Çıkarma İşlemi

Çıkarma işlemine geldiğimizde yine aynı mantıkta olduğunu görüyoruz.

0 – 0 = 0
1 – 0 = 1
1 – 1 = 0
0 – 1 = 1 (1 Ödünç)

Toplama işleminde elde olduğu gibi çıkarma işleminde de ödünç (borrow) elde edilir. Bu ödünç mikroişlemcilerde ALU tarafından bayrak biti olarak yazmaçlara kaydedilmektedir. Bu elde ve ödünç bitleri sırf iki biti toplamak veya çıkarmakla sınırlı kalmaz. Örneğin 8 bitlik veriyi bir 8 bitlik veri ile topladığımızda yine ikilik tabanda elde biti elde ederiz. Bu eldeli sayı bir sonraki basamağa yazılır. Örneğin 0111 ile 0111’i topladığımızda 1110 değerini elde ederiz. En soldaki sayı elde biti olarak elde edilir.

İkinin Tümleyeni Yöntemi

İkinin tümleyeni yöntemi modern bilgisayar sistemlerindeki aritmetik devrelerin temelini oluşturur. Bu yöntem pozitif ve negatif ikilik sayılar üzerinde işlem yapılırken kullanılır. Bunu yapmamız ikin öncelikle iki sayının da ikinin tümleyenini bulmamız gereklidir. Önceden bunu bitleri tersleyip bir ekleyerek yapacağınızı söylemiştik. Aşağıdaki hesaplama programı ile de yapmanız mümkündür.

https://www.exploringbinary.com/twos-complement-converter/

İlk değerimiz bir negatif sayı olan -20 olacak. Bunun ikilik tabanda ikinin tümleyeni olarak karşılığı “11101100” olacaktır. İkinci değerimiz ise +30 olup bunun da ikilik tabanda ikinin tümleyeni olarak karşılığı “00011110” olacaktır. Dikkat ederseniz bunlar sayıların düz karşılıkları değildir. Şimdi bu ikisini toplayalım.

11101100
00011110
+———–
100001010

Burada en soldaki eldeyi çıkartırsak sonuç olarak onluk tabanda 10 değerini buluyoruz. Bunu hesaplama programlarıyla yapmanız çok kolaydır fakat bizim maksadımız karşınıza “two’s complement” diye bir tabir çıktığında ne olduğunu bilmenizdir.

İkinin tümleyeni yöntemi ile çıkarma işlemi yapmak bizi biraz şaşırtacaktır. Çünkü toplama işlemi yaparak çıkarma işlemi yapmış olacağız. Bu yöntemi kullanarak ayrı bir çıkarma devresi kurmak yerine toplama devresi ile çıkarma işlemini yapabiliriz. Çarpma toplamanın, bölme de çıkarmanın özeti olduğuna göre dört işlemi sadece toplama işlemi yaparak yapabiliriz. Bu insan için tuhaf görünse de mikroişlemcilerde çipe sığdırılacak transistörlerin ve bunun maliyetinin hesabı yapıldığında makine için oldukça mantıklı bir yoldur.  Size örnek bir çıkarma işlemi ile bunun nasıl olduğunu gösterelim.

24’den 14’ü çıkarmak istediğimizde öncelikle iki sayının da ikinin tümleyenini bulmamız gerekir. 24’ün ikinin tümleyeni “00011000”, 14’ün ise “00001110” olarak karşımıza çıkar. 14’ün ikinin tümleyeni sonucunu tekrar aynı ikinin tümleyeni işlemine tabi tuttuğumuzda ise “11110010” değerini buluruz. Bunları toplayıp değeri elde edelim.

00011000
11110010
+———-
00001010

Burada eldeyi elden attığımızda 10 sayısının ikilik değerini buluruz.

Çarpma İşlemi

Çarpma işlemine baktığımızda AND kapısının doğruluk tablosundan çok farklı olmadığını görürüz. Aşağıda çarpma işlemine dair işlemler verilmiştir.

0 x 0 = 0
0 x 1 = 0
1 x 0 = 0
1 x 1 = 1 

Büyük sayıları çarparken yine onluk tabanda yaptığımız çarpma işlemine benzer bir işlem yaparız. Mikroişlemciler çarpma işlemini sola devamlı kaydırma ve toplama veya sağa devamlı kaydırma ve çıkarma olarak yapmaktadır. Sola devamlı kaydırarak yaptığımız ve topladığımız işlem iki basamaklı sayılardan itibaren yaptığımız çarpma işlemi gibidir. Örneğin elimizde “10101” sayısı olsun ve bunu “101” ile çarpalım.

   10101
        101
x———–
      10101
    00000
 10101
—————
 01101001

Görüldüğü gibi burada 0 olan kısma tamamen sıfır yazıyoruz ve 1 olan basamaklara çarptığımız sayının aynısını her basamakta birer kere sola kaydırarak yazıyoruz. Bu işlem toplama işleminin tekrarlanmış hali olarak algoritmalar tarafından yürütülür.

Bölme İşlemi

Bölme işlemi çarpma işlemi gibi yapılsa da bu sefer toplama yerine çıkarma işlemine tabi tutulur. Yalnız çarpma işleminde sola kaydırırken bölme işleminde sağa kaydırıp çıkarma işlemini yaparız. Örneğin “100110” sayısını “1100” değerine bölmek istediğimizde şöyle bir işlem takip edilir.

100110
1100
  1100
     1100
-________
         0010

Buraya kadar ikilik tabanda yapılan dört işlemi anlatmış olduk. Bundan sonra mantık devrelerine ve kapılarına geçeceğiz ve sonrasında temel mantık devrelerinden bahsedeceğiz.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

UYARI!!

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...

Bir cevap yazın

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