İkinin tümleyeni

Bir ikili sayının **ikiye [[Tümleme|tümlenmesi]]**, kendisinden büyük ve 2'nin tam sayı üssü olan en küçük tam sayıdan çıkarılması ile gerçekleştirilir. Elde edilen sayının ikili sayı aritmetiğinde orijinal sayının eksi işaretlisi olarak davranması nedeniyle, tam sayı değerleri bilgisayarda temsil etmek için kullanılan **ikinin tümleyeni gösterimi** bu işlemi temel almıştır. -1 ile çarpmanın (veya toplamsal tersin bulunmasının) ikinin tümleyeni kullanılarak gerçekleştirildiği bu gösterime göre oluşturulmuş sayıların değerleri aşağıdaki formül kullanılarak hesaplanabilir.



Buna göre, *n* ikillik bir bölgede temsil edilebilecek en küçük sayı 2-n-1—işaret ikili 1, diğer ikiller 0—olurken, en büyük sayı 2n-1-1—işaret ikili 0, diğer ikiller 1—olacaktır. Temsil edilebilir eksi değerlerin artı değerlerden sayıca bir fazla olmasının sebebi, tüm basamakların 0 olması ile temsil edilen sıfırın artı değerler ile aynı işaret ikiline sahip olmasıdır. Bu, birin tümleyeni ve işaretli büyüklük gibi diğer gösterimlerin aksine, ikinin tümleyeninde sıfır için tek gösterim olduğu anlamına gelir.

## Açıklama

*n* basamaklı bir N sayısının ikinin tümleyeni N≠0 için 2n-N ve N=0 için 0 olarak tanımlanır. Sayının ikillerinin 1'e tümlenmesi ile yapılan birin tümleyeni düşünüldüğünde, bir sayının ikiye tümlenmesinin aynı sayının birin tümleyenine 1 ekleyerek yapılabileceği görülür. Daha basit bir yöntem önermek gerekirse, bir sayının ikiye tümlenmesi şöyle gerçekleştirilebilir: söz konusu sayının sağ tarafında yer alan 0'ları ilk 1'e kadar değiştirilmeden bırakılıp, bu 1'den sonraki basamaklardaki 0'lar 1, 1'ler de 0 ile değiştirilir.

; Örnek:

İkinin Tümleyeni(011010010) → 100101110
İkinin Tümleyeni(110011011) → 001100101

Bugünkü modern bilgisayarlarda ikinin tümleyeni gösteriminin tercih edilmesinin birçok nedeni vardır.
* Gösterimdeki en yüksek basamaklı ikil temsil edilen değerin işaretini belirler; eksi sayılar işaret ikilindeki 1 ile gösterilirken, 0 ve artı sayılar işaret ikilindeki 0 ile temsil edilirler.
* 0'ın sadece bir gösterimi vardır. Bu da 1'in tümleyeninde ve işaretli büyüklük gösteriminde oluşan +0 ve -0 sorununu ortadan kaldırır.
* *n* ikilde -2n-1'den 2n-1-1'e kadarki tam sayı değerleri ifade edilebilir. Burada bir simetrinin olmaması 0'ın tek gösteriminden kaynaklıdır.
* Mutlak değerce en büyük eksi sayının -1 ile çarpılması taşmaya neden olacaktır. Bunun nedeni de yukarıda bahsedilen simetrinin olmamasıdır.

## Eksi sayıların gösterimi

### İşaretli büyüklük gösterimi

Eksi sayıların gösteriminde donanımdaki sınırlamalardan dolayı, ikil adı verilen ikili sayılardan yararlanılır. İşaretli ya da işaretsiz bütün ikili sayılar bilgisayarda ikillerle ifade edilir. Sayının işaretli olup olmadığı önceden belirlenir. Eğer ikili tabanda bir sayı işaretli olarak belirlenmişse en soldaki ikil sayının işaretini, geri kalan ikiller ise sayının mutlak değerini ifade eder. Eğer sayı işaretsiz olarak belirlenmişse en soldaki ikil sayının en anlamlı ikili olur. Burada, işaret ikili olarak artı sayılar için 0, eksi sayılar için ise 1 kullanılır. Örneğin; 0110 işaretsiz ikili sayısı olarak onlu tabanda 6, işaretli olaraksa +6 anlamına gelir. 1110 ise işaretsiz olarak onlu tabanda 14 iken işaretli olarak -6'ya eşdeğerdir.

### İşaretli tümleyen gösterimi

Eksi bir sayı mutlak değerinin tümleyeni alınarak da ifade edilebilir. Bir sayının ters işaretlisinin sadece işaret ikilinin değiştirilmesiyle elde edildiği işaretli büyüklük gösteriminden farklı olarak, tümleyenle gösterimde işaret değiştirmek için sayının tümleyeni alınır. Bu, işaret ikili dışındaki ikillerin de değişebileceği anlamını taşır.

Artı sayılar her zaman için en solunda 0 ile başlayacağından, bu sayıların tümleyenleri de, yani eksi sayılar, 1 ile başlayacaktır. Diğer ikillerin yeni değerleri, ne çeşit bir tümleme yapılmasına bağlı olarak değişir. Birin tümleyeni alınması durumunda, diğer ikiller de tersi alınarak değişirken, ikinin tümleyininde sonuç işaretsiz gösterimdeki her ikilin tersinin alınıp bulunan sonuca 1 eklenmesiyle ifade edilir.

### Örnek

12 sayısının sekiz ikille gösterildiği durumu inceleyelim. +12'nin gösterimi en soldaki 0 değerli işaret ikilinin ardından mutlak değerin ikili tabanda ifade edilmesiyle elde edilir. Dolayısıyla, +12 00001100 olarak temsil edilecektir. Buna göre, -12 sayısını üç şekilde ifade edebiliriz:

İşaretli Büyüklük G(-12) /* İşaret ikili değiştirilir */ → 10001100
Birin Tümleyen iG(-12) /* Tüm ikiller değiştirilir */ → 11110011
İkinin Tümleyeni G(-12) /* Birin Tümleyeni G(-12) + 1 */ → 11110100

Dikkat edecek olursanız, +12 ve -12'nin ikinin tümleyeni gösterimlerinin toplamı 00001100 + 11110100 = 100000000'dır. Bu dokuz ikillik işaretsiz bir sayıdır ve bu sayı da 28 = 256'dır. Ancak biz sonucu sekiz ikillik ikinin tümleyeni gösterimli bir sayı olarak ele alırsak 1'i sekiz ikillik hesaplamada oluşan bir taşma olarak düşünür ve atarız. Dolayısıyla, sonuç olarak 00000000 = 0'ı elde ederiz. Bu da +12 ve -12'nin toplamından bekleyeceğimiz bir sonuçtur.

## Aritmetik İşlemler

### Aritmetik [[Toplama]]

2'nin tümleyeni ile ifade edilen farklı işarete sahip iki sayıyı topluyorsak herhangi özel bir işleme gerek yoktur. Çünkü bu durumlarda taşma oluşmaz. 2'nin tümleyeni kullanılarak temsil edilen iki eksi sayının toplamı, işaret ikilleri de dahil olmak üzere iki sayının toplanmasıyla bulunur. İşaret ikillerinin toplanmasıyla oluşan elde atılır. Oluşan sonuç eğer eksiyse bu 2'nin tümleyeni biçimindedir.

; Örnek:

  00000011  (elde)     00001111  (elde)
   00000110 (+6)       11111010 (-6)
 + 00001101 (+13)      + 00001101 (+13)
 ----------------      ----------------
   00010011 (+19)      00000111 (+7)

 00000011  (elde)      11111001 (elde)
   00000110 (+6)       11111010  (-6)
 + 11110011 (-13)      + 11110011  (-13)
 ----------------      -----------------
   11111001 (-7)       11101101  (-19)

Buradaki mantık onluk tabanda kullandığımız toplama mantığı ile aynıdır. En düşük değerli basamaktan başlayarak toplama işlemleri yapılır, çıkan eldeler bir sonraki basamağa aktarılarak toplama işlemi tamamlanır. Eğer iki artı sayının toplamından eksi bir sonuç, iki eksi sayının toplamından artı bir sayı çıkıyorsa burada bir taşma söz konusudur.

Genel anlamda n ikillik iki sayı ile başlamışsak ve toplamanın sonucu n+1 ikilden oluşuyorsa bir taşma var demektir. n ikillik bir sayının başına artı sayılar için 0, eksi sayılar için 1 getirerek ikil sayısını (n + 1)'e çıkarırız ve toplamı işlemini böyle gerçekleştiririz.
Taşmanın oluştuğu bir durum için +6 ve +13 sayılarnı 5 ikille ifade edip toplayalım.

; Örnek:

   00110 (+6)
 + 01101 (+13)
 --------------
   10011 (-13) (taşma)

### Aritmetik [[çıkarma]]

İkili tabandaki çıkarma işleminin mantığı onlu tabandaki ile aynıdır: çıkan sayının basamağı diğer sayının aynı basamağından küçükse, çıkan sayının bir sonraki basamağından ödünç 1 alınır.... Ancak, çıkarma işlemini ikinin tümleyeni kullanarak yapmak çok daha verimli olacaktır. Yapılması gereken, çıkarılan sayının ikinin tümleyeni alınıp diğer sayıya eklenerek sonucun bulunmasından ibarettir. +7'den +6'yı çıkaralım:

; Örnek:

  0111 (+7)     0111 (+7)
  - 0110 (+6)   + 1010 (-6)
  ------------  -----------
  0001 (+1)    (1)0001 -> 1 eldesi atılır.

İşaret ikili dahil olmak üzere çıkarılanın ikinin tümleyeni alınarak diğer sayıya eklenir. İşaret ikillerinin toplanması sonucu oluşacak elde atılır.

Çıkarma işleminde iki sayının da işareti aynıysa bir taşma oluşmaz. Aksi takdirde, sayıların değerine göre taşma söz konusu olabilir.

### [[Donanım]] ile çarpma işlemi
İki bitlik iki sayının çarpımı

### [[Yazılım]] ile çarpma işlemi
Aşağıda işaretsiz çarpma işlemi için yazılım algoritması verilmiştir.

## Kaynakça

* Mano, M. Morris(2001). *Digital Design* ISBN 975-8431-29-3
* Patterson and Hennessy. *Computer Organization and Design: The Hardware/Software Interface, Third Edition*
* https://web.archive.org/web/20101008022849/http://oergin.etu.edu.tr/bil361/bil361.html