В предишния ни раздел научихме как можем да извършваме аритметични операции като събиране и изваждане с помощта на допълнение към 1. В този раздел ще се научим да извършваме тези операции, като използваме допълнение към 2.
json в json пример
Събиране с помощта на допълнение към 2
Възможни са три различни случая, когато събираме две двоични числа, използвайки допълнение на 2, което е както следва:
Случай 1: Добавяне на положително число с отрицателно число, когато положителното число има по-голяма величина.
Първоначално намерете допълнението на 2 на даденото отрицателно число. Сумирайте с даденото положително число. Ако получим крайното пренасяне 1, тогава числото ще бъде положително число и пренасящият бит ще бъде отхвърлен, а останалите битове са крайният резултат.
Пример: 1101 и -1001
- Първо намерете допълнението към 2 на отрицателното число 1001. Така че, за да намерите допълнение към 2, променете всички 0 на 1 и всички 1 на 0 или намерете допълнението към 1 на числото 1001. Допълнението към 1 на числото 1001 е 0110 и добавете 1 към LSB на резултата 0110. Така че допълнението на 2 към число 1001 е 0110+1=0111
- Добавете и двете числа, т.е. 1101 и 0111;
1101+0111=1 0100 - Като съберем и двете числа, получаваме крайното пренасяне 1. Изхвърляме крайното пренасяне. И така, събирането на двете числа е 0100.
Случай 2: Добавяне на положителната стойност с отрицателна стойност, когато отрицателното число има по-висока величина.
Първоначално добавете положителна стойност със стойността на допълнение на 2 на отрицателното число. Тук не е намерено пренасяне в края. И така, вземаме добавката от 2 на резултата, за да получим крайния резултат.
Забележка: Резултатът е отрицателна стойност.
Пример: 1101 и -1110
- Първо, намерете допълнението на 2 на отрицателното число 1110. Така че, за да намерите допълнението на 2, добавете 1 към LSB на неговата стойност на допълнение на 1 0001.
0001+1=0010 - Добавете и двете числа, т.е. 1101 и 0010;
1101+0010= 1111 - Намерете допълнението към 2 на резултата 1110, който е крайният резултат. И така, допълнението към 2 на резултата 1110 е 0001 и добавете отрицателен знак преди числото, за да можем да идентифицираме, че е отрицателно число.
Случай 3: Събиране на две отрицателни числа
В този случай, първо, намерете допълнението на 2 на двете отрицателни числа и след това ще добавим и двете тези допълващи се числа. В този случай винаги ще получаваме крайното пренасяне, което ще бъде добавено към LSB, и забравяйки крайния резултат, ще вземем допълнението на the2 към резултата.
Забележка: Резултатът е отрицателна стойност.
Пример: -1101 и -1110 в петбитов регистър
- Първо намерете допълнението на 2 на отрицателните числа 01101 и 01110. Така че, за да намерим допълнението на 2, добавяме 1 към LSB на допълнението на 1 на тези числа. Допълнението на 2 към числото 01110 е 10010, а 01101 е 10011.
- Добавяме и двете допълнителни числа, т.е. 10001 и 10010;
10010+10011= 1 00101 - Като добавим и двете числа, получаваме крайното пренасяне 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. Това е отрицателното число и крайният отговор.