Dvojkový doplněk

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

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

Postup[editovat | editovat zdroj]

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.)


Jiný postup: Protože dvojkový doplněk je také neznaménkové vyjádření záporného čísla na daném rozsahu, lze ho získat jako rozdíl (maxima rozsahu +1) a absolutní hodnoty záporného čísla. Např. pro rozsah 8 bitů, kde maximum je 255, dojde při překročení rozsahu k přetečení, takže číslo 256 = 0. Potom bude znaménkovému vyjádření "-x = 0 - |x|" odpovídat neznaménkový zápis "-x = 256 - |x|".

Výpočet rozdílu dvou čísel pomocí dvojkového doplňku[editovat | editovat zdroj]

Ř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[editovat | editovat zdroj]

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ě 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.

odkazy[editovat | editovat zdroj]

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]