Two's Complement






Two's Complement is een methode om binair getallen te subtraheren (aftrekken) via simpele optelling van een als negatief geïnverteerd gemerkt getal waar een bit bij is opgeteld.

Konrad Zuse maakte al in zijn eerste computer, de Z1, gebruik van two's complement en is de eerste die het in een computer heeft toegepast.

Voorbeeld:

De simpele berekening van 5 - 3 in een binaire nibble format ziet er als volgt uit.

Als eerstes de vijf dit word een combinatie van 4 en 1 en ziet er dus binair zo uit. => 0101
Nu is de 3 aan de beurt die er normaal gesproken een combinatie van 2 en 1 is en er zo in een nibble pakket uitziet. => 0011

Nu volgen er twee stappen om de 3 in een -3 te veranderen.
Als eerstes keren wij de waarde van allen bits in de nibble om. Wij noemen dit inverteren.
van de 0011 wordt dus een 1100. Zoals te zien is, is ieder bit omgekeerd. In de computer is de NOT poort hiervoor verantwoordelijk. Nu volgt de tweede stap. Er moet een bit worden toegevoegd de 1100 wordt dus nu 1101.
Deze omvorming van 3 naar -3 noemt men two's complement.
Nu de berekening:

0000 0101
0000 1101
----------------- +
0001 0010

De optelling vanaf de LSB naar links als volgt:
1 + 1 wordt 0 en een onthouden(de C = carrier) 0 + 0 + de C is 1
1 + 1 is wederom 0 en ook hier hebben wij een C om naar de volgende macht te schuiven.
0 + 1 + C is echter ook 0 en wederom moeten wij de C onthouden en naar de volgende macht te schuiven.

De MSB, de 1 in de linkse nibble, komt in dit systeem echter te vervallen. De nibble geeft duidelijk 0010 aan waarvan de decimale equivalent dan ook 2 is.

De hardware uitvoering waarbij 4 full adder en XOR poorten voor de logische negatie worden gebruikt, ziet er dan zo uit.