logo

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

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

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

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

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

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

Пример: 1101 и -1001

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

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

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

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

Пример: 1101 и -1110

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

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

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

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

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

  1. Първо намерете допълнението на 1 на отрицателните числа 01101 и 01110. Така че, за да намерим допълнението на 1, променяме всички 0 на 1 и всички 1 на 0. Допълнението на 1 на числото 01110 е 10001, а 01101 е 10010.
  2. Сега добавяме и двете допълнителни числа, т.е. 10001 и 10010;
    10001+10010= 1 00011
  3. Като добавим и двете числа, получаваме крайното пренасяне 1. Добавяме това крайно пренасяне към LSB от 00011.
    00011+1=00100
  4. Сега намерете допълнението към 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, което е отрицателното число и крайния отговор.