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ě. Dvojkový doplněk umožňuje zjednodušit konstrukci aritmeticko-logické jednotky uvnitř procesoru, protože není nutné implementovat speciální strojovou instrukci pro odečítání. Odečítání lze pomocí dvojkového doplňku realizovat pomocí operace sčítání.

Postup kódování[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[editovat | editovat zdroj]

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]