Dvojkový doplněk
Dvojkový doplněk je způsob kódování celého záporného čísla v binární soustavě.
Obsah |
[editovat] 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.)
[editovat] 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.
[editovat] 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
do
. V uvedeném příkladě je N=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.
[editovat] Související články
- Kapitola Doplňkový kód v článku Dvojková soustava
do
. V uvedeném příkladě je N=4, kódovaný rozsah je od −8 do 7.