В предишния ни раздел научихме за различни допълнения като допълнение на 1, допълнение на 2, допълнение на 9 и допълнение на 10 и т.н. В този раздел ще се научим да изпълняваме аритметични операции като събиране и изваждане с помощта на допълнение на 1. Можем да извършваме събиране и изваждане с помощта на допълване на 1, 2, 9 и 10.
Събиране с помощта на допълнение към 1
Възможни са три различни случая, когато събираме две двоични числа, които са както следва:
Случай 1: Добавяне на положително число с отрицателно число, когато положителното число има по-голяма величина.
Първоначално изчислете допълнението към 1 на даденото отрицателно число. Сумирайте с даденото положително число. Ако получим крайно пренасяне 1, то се добавя към LSB.
Пример: 1101 и -1001
- Първо, намерете допълнението към 1 на отрицателното число 1001. Така че, за да намерите допълнение към 1, променете всички 0 на 1 и всички 1 на 0. Допълнението към 1 на числото 1001 е 0110.
- Сега добавете и двете числа, т.е. 1101 и 0110;
1101+0110=1 0011 - Като добавим и двете числа, получаваме крайната стойност на пренасянето 1. Добавяме тази крайна стойност на пренасянето към LSB на 0011.
0011+1=0100
Случай 2: Добавяне на положителна стойност с отрицателна стойност в случай, че отрицателното число има по-висока величина.
Първоначално изчислете допълнението на 1 към отрицателната стойност. Сумирайте го с положително число. В този случай не получихме крайното пренасяне. И така, вземете добавката от 1 на резултата, за да получите крайния резултат.
Забележка: Резултатът е отрицателна стойност.
Пример: 1101 и -1110
- Първо намерете допълнението на 1 на отрицателното число 1110. Така че, за да намерим допълнението на 1, променяме всички 0 на 1 и всички 1 на 0. Допълнението на 1 на числото 1110 е 0001.
- Сега добавете и двете числа, т.е. 1101 и 0001;
1101+0001= 1110 - Сега намерете допълнението към 1 на резултата 1110, който е крайният резултат. И така, допълнението към 1 на резултата 1110 е 0001 и добавяме отрицателен знак преди числото, за да можем да идентифицираме, че е отрицателно число.
Случай 3: Събиране на две отрицателни числа
В този случай първо намерете допълнението на 1 на двете отрицателни числа и след това събираме и двете допълващи се числа. В този случай винаги получаваме крайното пренасяне, което се добавя към LSB и за получаване на крайния резултат вземаме добавката на 1 към резултата.
Забележка: Резултатът е отрицателна стойност.
Пример: -1101 и -1110 в петбитов регистър
- Първо намерете допълнението на 1 на отрицателните числа 01101 и 01110. Така че, за да намерим допълнението на 1, променяме всички 0 на 1 и всички 1 на 0. Допълнението на 1 на числото 01110 е 10001, а 01101 е 10010.
- Сега добавяме и двете допълнителни числа, т.е. 10001 и 10010;
10001+10010= 1 00011 - Като добавим и двете числа, получаваме крайното пренасяне 1. Добавяме това крайно пренасяне към LSB от 00011.
00011+1=00100 - Сега намерете допълнението към 1 на резултата 00100, който е крайният отговор. И така, допълнението към 1 на резултата 00100 е 110111 и добавете отрицателен знак преди числото, за да можем да идентифицираме, че е отрицателно число.
Изваждане с помощта на допълнение на 1
Това са следните стъпки за изваждане на две двоични числа с помощта на допълнение към 1
- В първата стъпка намерете допълнението към 1 на субтрахенда.
- След това добавете допълващото число с умаляваното.
- Ако има пренасяне, добавете пренасянето към неговия LSB. В противен случай вземете допълнение на 1 към резултата, което ще бъде отрицателно
Забележка: Стойността на изместеното винаги се изважда от умаленото.
Пример 1: 10101 - 00111
Взимаме допълнение към 1 на субтрахенд 00111, което излиза 11 000. Сега ги сумирайте. Така,
10101+11000 =1 01101.
В горния резултат получаваме бит за пренасяне 1, така че добавете това към LSB на даден резултат, т.е. 01101+1=01110, което е отговорът.
Пример 2: 10101 - 10111
Взимаме допълнение към 1 на субтрахенда 10111, което получава 01000. Сега съберете и двете числа. Така,
10101+01000 =11101.
В горния резултат не получихме пренасящия бит. Така че изчислете допълнението към 1 на резултата, т.е. 00010, което е отрицателното число и крайния отговор.