Операции сложения и вычитания в дополнительном коде

  • docx
  • 18.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002058.docx

Операции сложения и вычитания в дополнительном коде.

Операции сложения и вычитания производятся путем арифметическо- го сложения кодов чисел. При вычитании перед выполнением операции для вычитаемого берется дополнение. Результат операции представлен в дополнительном коде.

(С)доп = (А)доп + (В)доп

(С)доп = (А)доп - (В)доп = (А)доп + ((В)доп)доп

Пример: вычислить С=А+В и D=A-B. Исходные числа А[10]=3, В[10]= -4. Сетка n=5.

Определим дополнительный код для А и В. 1. A[10] = 3                                    1. |B[10]| = 4,

A[2] =11                                   |B[2]| = 100

2. (A[2])доп = 00011                2. (B[2])доп = 00100

11011

+       1

11100

Выполним	сложение	(А)	+ (В):
00011
+11100
Наличие единицы в знаковом разряде результата сви- детельствует о том, что результат представляет собой код отрицательного числа. Определим десятичный эквивалент результата. Для этого возьмем дополне- ние для результата.

11111

(Инверсия) ®00000

+        1

Выполним вычитание (А) - (В):
Берем дополнение от (В[2])доп ((В[2])доп)доп = 11100
(Инверсия) ® 00011
+	1
00100
Сложим
(А[2])доп+(В[2])доп)доп 00011
00001 ® 1[10]    Результат равен –1.

 

 

 

 

 

Наличие нуля в знаковом разряде результата свиде- тельствует о том, что результат представляет собой код положительного числа. Определим десятичный эквивалент результата. Для этого достаточно преоб-


разовать двоичный результат в десятичное число. Результат равен +7.

 

 

 

 

 

 

Т.к. разрядная сетка ограничена, то при сложении кодов одинакового знака значение результата может выйти за границы диапазона чисел в данной разрядной сетке. Такая ситуация называется переполнением и обнаруживается по одному из признаков:

1.   Знаковые разряды слагаемых одинаковы, а знак результата противо- положный.

2.   Наличие переноса в знаковый разряд и отсутствие переноса из знако- вого разряда.

 

Знак

 

 

 

   

Этот признак легко реализуется аппаратным способом в сумматоре. Обычно при возникновении переполнении формируется специальный сигнал. Однако во многих ЭВМ этот сигнал игнорируется. В этом случае контроль диапазонов данных и результата возлагается на программиста.

 

Пример. Даны числа A[10])=342 и B[10]= -430. Длина разрядной сетки 16. Представить чис- ла в дополнительном коде и выполнить операции сложения A+B и вычитания A-B. Полу- чить десятичные эквиваленты результатов операций.

A[10]= 342, следовательно A[16]= 156 и A[8]= 526 B[10]= -430, следовательно B[16]= -1AE и B[8]= -656

 

v  Шестнадцатеричное кодирование

Определим дополнительные коды чисел и заранее подготовим дополнение для кода вычи- таемого:

[16])доп=0156              (B[16])доп=FFFF                ((B[16])доп)доп=FFFF

-01AЕ                                         - FE52

FE51                                           01AD

  +      1                                         +       1

FE52                                           01AЕ


Cложение (А)доп+(В)доп 0156
+FE52 FFA8
Старший двоичный разряд ре- зультата равен единице. Резуль- тат соответствует отрицательно- му числу. Берем дополнение для него:
FFFF
- FFA8 0057
+	1
0058
Результат= (80+8)= 88
             Вычитание, т.е. (А)доп+((В)доп)доп 015 6
+01AE 03 04
Старший двоичный разряд резуль- тата равен нулю. Результат соответ- ствует положительному числу.





Результат= (3*256+4)=772[10]

 

v  Восьмеричное кодирование

[8])доп=000526

(B[8])доп=177777

((B[8])доп)доп= 177777

 

-000656

- 177122

 

177121

000655

 

  +          1

+        1

 

177122

000656

 

 

Cложение (А)доп+(В)доп

 

 

Вычитание, т.е. (А)доп+((В)доп)доп

000526

 

 

000526

+177122

 

 

+000656

177650

 

 

001404

Старший двоичный разряд

ре-

 

Старший двоичный разряд резуль-

зультата равен единице. Резуль- тат соответствует отрицательно- му числу. Берем дополнение для него:

177777

- 177650

000127

+       1

000130

Результат= (64+24)= 88

 

тата равен нулю. Результат соответ- ствует положительному числу.

 

 

 

 

 

Результат= (1*512+4*64+4)=772[10]

 

Пример. В ЭВМ выполнена операция сложения A+B=R. Числа представлены в дополни- тельном коде. Длина разрядной сетки 16. Код первого слагаемого (А[16])доп=006D, а код результата (R[16])доп=005E. Определить код второго слагаемого и десятичные эквивален- ты слагаемых и результата.

(R)доп=(А)доп+(В)доп, отсюда (B)доп=(R)доп-(A)доп или

(B)  доп=(R)доп+((A)доп))доп.

 

((A[16])доп)доп=FFFF

-006D FF92

  +       1

FF93

Коды первого слагаемого и результата соответствуют положительным числам. A[10] = 6×161 + 13×160 = 109


R[10] = 5×161 + 14×160 = 94

 

Cложим . (R)доп+((A)доп)доп 005E
+FF93 FFF1
Старший двоичный разряд кода B равен единице. Слагаемое B соответствует отрицательному числу. Берем дополнение для не- го:
FFFF
- FFF1
000E
+	1
000F
Слагаемое B = 15