Yazan : Şadi Evren ŞEKER
Konunun diğer başlıkları: 2 tümleyeni, two’s complement
Bilgisayar bilimlerinde, sayılar genelde ikilik tabanda tutulmaktadır. Değerleri ikilik tabanda göstermenin bir devamı olarak eksi sayı ve artı sayıları da ayırmak gerekmektedir. bir tümleyeni gibi iki tümleyeni de eksi sayıları göstrem biçimlerinden birisidir. iki tümleyenini almak için önce bir tümleyeni alınır ardında sayıya ikilik tabanda 1 eklenir.
Örneğin
11011001
sayısının bir tümleyeni aşağıda verilmiştir:
00100110
bu sayıya 1 eklenerek, iki tümleyeni elde edilir:
00100111
Bu sayı aynı zamanda orjinal sayı olan 11011001
sayısının da negatifi gösterimi olarak kullanılabilir.
Bunu bir örnek ile göstermek gerekirse, aşağıdaki çıkarma işlemini ele alalım:
11001001 10110101 - --------- 00010100
bilindiği üzere aslında çıkarma işlemini, çıkarılan sayının negatifini alıp toplama olarak da yorumlayabiliriz.
Bu durumu aynı örnek için tecrübe edelim. Öncelikle çıkarılan sayı olan 10110101
sayısının negatifini alalım, yani iki tümleyenini:
01001010
sayısı elde edilir. Şimdi bu sayının gerçekten negatif olduğunu yukarıdaki örneği toplamaya çevirerek görelim:
11001001 01001010 + --------- 100010100
Görüldüğü üzere elde edilen sonucun başında bulunan 1 atılırsa, ilk işlemden çıkan sonuç ile aynıdır.
Sayıların 8-bit ikili tümleyici yöntemiyle işlendiği bir devrede taşma durumu hangisinde olur?
a)78(16)-06(16)
b)59(16)+27(16)
c)4C(16)+32(16)
d)26(16)+50(16)
e)80(16)-7F(16)
Bu sorunun çözümünü anlatabilirseniz çok sevinicem.Şimdiden teşekkürler.Saygılar.
Sorunuzu yanıtlayalım.
Öncelikle sayılar arasındaki işlemin (toplama veya çıkarma) yapılması sırasında, iki tümleyeni alınması istendiği için (two’s complement) çıkarma işlemlerinde iki tümleyeni alalım.
a) 06 sayısının iki tümleyenine bakalım:
sayının ikilik tabandaki karşılığı 0000 0110
sayının bir tümleyeni : 1111 1001 (sayının bitlerini ters çeviriyoruz)
sayının iki tümleyeni : 1111 1010 (bir önceki sayıya 1 ekliyoruz)
işlem sonucunda toplama işlemine geçiyoruz:
78 sayısını toplama için ikilik tabana çevirelim :
0111 1000
şimdi iki sayıyı toplayalım:
0111 1000 + 1111 1010 = 10111 0010
Yukarıdaki işlem sonucunda görüldüğü üzere 8 bitten fazla bir sonuç çıktı (sonuçta 9 bit bulunuyor) bu durumda bir taşma olduğunu söyleyeibliriz ve cevaplarınızdan bir tanesi için a şıkkını seçebilirsiniz.
Diğer şıkları da benzer şekilde çözebilirsiniz.
Başarılar
tesekkürler..
10110101 sayısının ikili tümleyeni olarak 01001010 yazılmış: 01001011 olmalı. Zaten 11001001 + 01001010 işlemi de 01001011’ye göre yapılmış görünüyor, sadece ikili tümleyeni olarak belirtilen sayı hatalı görünüyor.
İyi çalışmalar.