logo

Събиране и изваждане с помощта на допълнение от 2

В предишния ни раздел научихме как можем да извършваме аритметични операции като събиране и изваждане с помощта на допълнение към 1. В този раздел ще се научим да извършваме тези операции, като използваме допълнение към 2.

json в json пример

Събиране с помощта на допълнение към 2

Възможни са три различни случая, когато събираме две двоични числа, използвайки допълнение на 2, което е както следва:

Случай 1: Добавяне на положително число с отрицателно число, когато положителното число има по-голяма величина.

Първоначално намерете допълнението на 2 на даденото отрицателно число. Сумирайте с даденото положително число. Ако получим крайното пренасяне 1, тогава числото ще бъде положително число и пренасящият бит ще бъде отхвърлен, а останалите битове са крайният резултат.

Пример: 1101 и -1001

  1. Първо намерете допълнението към 2 на отрицателното число 1001. Така че, за да намерите допълнение към 2, променете всички 0 на 1 и всички 1 на 0 или намерете допълнението към 1 на числото 1001. Допълнението към 1 на числото 1001 е 0110 и добавете 1 към LSB на резултата 0110. Така че допълнението на 2 към число 1001 е 0110+1=0111
  2. Добавете и двете числа, т.е. 1101 и 0111;
    1101+0111=1 0100
  3. Като съберем и двете числа, получаваме крайното пренасяне 1. Изхвърляме крайното пренасяне. И така, събирането на двете числа е 0100.

Случай 2: Добавяне на положителната стойност с отрицателна стойност, когато отрицателното число има по-висока величина.

Първоначално добавете положителна стойност със стойността на допълнение на 2 на отрицателното число. Тук не е намерено пренасяне в края. И така, вземаме добавката от 2 на резултата, за да получим крайния резултат.

Забележка: Резултатът е отрицателна стойност.

Пример: 1101 и -1110

  1. Първо, намерете допълнението на 2 на отрицателното число 1110. Така че, за да намерите допълнението на 2, добавете 1 към LSB на неговата стойност на допълнение на 1 0001.
    0001+1=0010
  2. Добавете и двете числа, т.е. 1101 и 0010;
    1101+0010= 1111
  3. Намерете допълнението към 2 на резултата 1110, който е крайният резултат. И така, допълнението към 2 на резултата 1110 е 0001 и добавете отрицателен знак преди числото, за да можем да идентифицираме, че е отрицателно число.

Случай 3: Събиране на две отрицателни числа

В този случай, първо, намерете допълнението на 2 на двете отрицателни числа и след това ще добавим и двете тези допълващи се числа. В този случай винаги ще получаваме крайното пренасяне, което ще бъде добавено към LSB, и забравяйки крайния резултат, ще вземем допълнението на the2 към резултата.

Забележка: Резултатът е отрицателна стойност.

Пример: -1101 и -1110 в петбитов регистър

  1. Първо намерете допълнението на 2 на отрицателните числа 01101 и 01110. Така че, за да намерим допълнението на 2, добавяме 1 към LSB на допълнението на 1 на тези числа. Допълнението на 2 към числото 01110 е 10010, а 01101 е 10011.
  2. Добавяме и двете допълнителни числа, т.е. 10001 и 10010;
    10010+10011= 1 00101
  3. Като добавим и двете числа, получаваме крайното пренасяне 1. Това пренасяне се отхвърля и крайният резултат е допълнението 2.s на резултата 00101. Така че допълнението на 2 на резултата 00101 е 11011 и добавяме отрицателно знак пред числото, за да можем да идентифицираме, че е отрицателно число.

Изваждане с помощта на допълнение на 2

Това са следните стъпки за изваждане на две двоични числа с помощта на допълнение на 2

  • В първата стъпка намерете допълнението на 2 на субтрахенда.
  • Добавете допълващото число с умаляваното.
  • Ако получим пренасянето чрез добавяне на двете числа, тогава отхвърляме това пренасяне и резултатът е положителен, в противен случай вземаме добавка на 2 от резултата, която ще бъде отрицателна.

Пример 1: 10101 - 00111

Взимаме допълнение към 2 на субтрахенд 00111, което е 11001. Сега ги сумирайте. Така,

10101+11001 =1 01110.

В горния резултат получаваме бит за пренасяне 1. Така че изхвърляме този бит за пренасяне и остава крайният резултат и положително число.

Пример 2: 10101 - 10111

Взимаме допълнение към 2 на субтрахенда 10111, което получава 01001. Сега събираме и двете числа. Така,

10101+01001 =11110.

В горния резултат не получихме пренасящия бит. Така че изчислете допълнението на 2 на резултата, т.е. 00010. Това е отрицателното число и крайният отговор.