logo

Sčítání a odčítání pomocí doplňku 2

V naší předchozí části jsme se naučili, jak můžeme provádět aritmetické operace, jako je sčítání a odčítání pomocí doplňku 1. V této části se naučíme provádět tyto operace pomocí doplňku 2.

linkedlist java

Sčítání pomocí doplňku 2

Jsou možné tři různé případy, kdy sečteme dvě binární čísla pomocí doplňku 2, což je následující:

Případ 1: Sčítání kladného čísla se záporným číslem, když kladné číslo má větší velikost.

Nejprve najděte dvojkový doplněk daného záporného čísla. Sečtěte s daným kladným číslem. Pokud dostaneme end-around carry 1, pak bude číslo kladné číslo a bit přenosu bude zahozen a zbývající bity jsou konečným výsledkem.

Příklad: 1101 a -1001

  1. Nejprve najděte dvojkový doplněk záporného čísla 1001. Chcete-li tedy najít dvojkový doplněk, změňte všechny 0 na 1 a všechny 1 na 0 nebo najděte jedničkový doplněk k číslu 1001. Doplněk 1 k číslu 1001 je 0110 a přidejte 1 k LSB výsledku 0110. Doplněk 2 k číslu 1001 je tedy 0110+1=0111
  2. Sečtěte obě čísla, tj. 1101 a 0111;
    1101+0111=1 0100
  3. Sečtením obou čísel dostaneme end-around carry 1. End-around carry zahodíme. Součet obou čísel je tedy 0100.

Případ 2: Sčítání kladné hodnoty se zápornou hodnotou, když záporné číslo má vyšší velikost.

Zpočátku přidejte kladnou hodnotu s hodnotou doplňku 2 záporného čísla. Zde nebyl nalezen žádný end-around carry. Vezmeme tedy dvojkový doplněk výsledku, abychom získali konečný výsledek.

Poznámka: Výsledkem je záporná hodnota.

Příklad: 1101 a -1110

  1. Nejprve najděte dvojkový doplněk záporného čísla 1110. Chcete-li tedy najít dvojkový doplněk, přidejte 1 k LSB jeho hodnoty doplňku 1 0001.
    0001+1=0010
  2. Sečtěte obě čísla, tj. 1101 a 0010;
    1101+0010= 1111
  3. Najděte dvojkový doplněk výsledku 1110, který je konečným výsledkem. Doplněk 2 k výsledku 1110 je tedy 0001 a před číslo přidejte záporné znaménko, abychom mohli identifikovat, že se jedná o záporné číslo.

Případ 3: Sečtení dvou záporných čísel

V tomto případě nejprve najděte dvojkový doplněk obou záporných čísel a poté obě tato čísla doplňků sečteme. V tomto případě vždy dostaneme end-around carry, které bude přidáno k LSB, a zapomeneme-li na konečný výsledek, vezmeme k výsledku doplněk 2.

Poznámka: Výsledkem je záporná hodnota.

Příklad: -1101 a -1110 v pětibitovém registru

  1. Nejprve najděte dvojkový doplněk záporných čísel 01101 a 01110. Abychom našli dvojkový doplněk, přidáme 1 k LSB doplňku 1 těchto čísel. Doplněk 2 k číslu 01110 je 10010 a 01101 je 10011.
  2. Sečteme obě čísla doplňku, tj. 10001 a 10010;
    10010+10011= 1 00101
  3. Sečtením obou čísel dostaneme end-around carry 1. Toto carry se zahodí a konečným výsledkem je 2.s doplněk výsledku 00101. Takže dvojkový doplněk výsledku 00101 je 11011 a přidáme záporný znaménko před číslem, abychom mohli identifikovat, že se jedná o záporné číslo.

Odečítání pomocí doplňku 2

Toto jsou následující kroky k odečtení dvou binárních čísel pomocí doplňku 2

  • V prvním kroku najděte dvojkový doplněk subtrahendu.
  • Přidejte číslo doplňku s menovkou.
  • Pokud získáme přenos sečtením obou čísel, pak tento přenos zahodíme a výsledek je kladný, jinak vezmeme dvojkový doplněk výsledku, který bude záporný.

Příklad 1: 10101 - 00111

Vezmeme dvojkový doplněk subtrahendu 00111, což je 11001. Nyní je sečtěte. Tak,

10101+11001 =1 01110.

Ve výše uvedeném výsledku dostaneme bit přenosu 1. Tento bit přenosu tedy zahodíme a zbývá konečný výsledek a kladné číslo.

Příklad 2: 10101–10111

Vezmeme dvojkový doplněk subtrahendu 10111, který vyjde 01001. Nyní sečteme obě čísla. Tak,

10101+01001 =11110.

Ve výše uvedeném výsledku jsme nesehnali bit. Vypočítejte tedy dvojkový doplněk výsledku, tj. 00010. Je to záporné číslo a konečná odpověď.