Dvojkový doplněk

Dvojkový doplněk je způsob kódování celého záporného čísla v binární soustavě.

Postup 

Postup kódování je ten, že od absolutní hodnoty kódovaného záporného čísla je odečtena jednička, číslo je převedeno do dvojkové soustavy a je provedena jeho negace. (Stejného výsledku lze dosáhnout, pokud je absolutní hodnota nejprve převedena do dvojkové soustavy, negována a nakonec je ve dvojkové soustavě přičtena jednička.)

Výpočet rozdílu dvou čísel pomocí dvojkového doplňku 

Řekněme, že máme dvě celá čísla v absolutní hodnotě 1000 0001 a 11 0110, a chceme druhé číslo odečíst od prvního.

1. Zarovnáme počet bitů obou čísel - 1000 0001 a 0011 0110 (doplnění nul)
2. Provedeme negaci 
menšitele (číslo, které je odečítáno) - 0011 0110 ⇒ 1100 1001
3. Provedeme inkrementaci (přičtení jedničky) 
menšitele - 1100 1001 + 1 = 1100 1010

Dvojkový doplněk je tedy 1100 1010. Výpočet rozdílu provedeme sečtením menšence 1000 0001 a doplňku 1100 1010. Výsledkem tohoto součtu je číslo 10100 1011, kde ale musíme vynechat přenos jedničky do nejvyššího řádu. Konečným výsledkem je tedy číslo 0100 1011.

Ukázka 

Následující příklad předvádí kódování čísel −8 až 7 (v desítkové soustavě) do čtyřbitového čísla ve dvojkové soustavě použitím dvojkového doplňku.

Dvojkový doplněk

Desítkově

0111

7

0110

6

0101

5

0100

4

0011

3

0010

2

0001

1

0000

0

1111

−1

1110

−2

1101

−3

1100

−4

1011

−5

1010

−6

1001

−7

1000

−8

Z příkladu jsou patrné následující skutečnosti:

·         Je-li nejvyšší bit (MSB) 1, potom je číslo záporné.

·         Při kódování do N bitů je možné zakódovat čísla od -2^{N-1}  do 2^{N-1}-1. V uvedeném příkladě jeN=4, kódovaný rozsah je od −8 do 7.

·         Výsledkem binárního součtu kladného a záporného čísla ve dvojkovém doplňku je opět číslo ve dvojkovém doplňku. Například (−6 + 3)10 = (1010 + 0011)2 = 11012 = −310.