Сложение чисел в обратном и дополнительном коде



Правило 1. При сложении чисел в обратном коде знаковые разряды складываются аналогично остальным, перенос из знакового разряда прибавляется к младшему разряду результата (так называемый циклический перенос), результат получается в обратном коде.

Правило 2. При сложении дополнительных кодов чисел знаковые разряды складываются аналогично остальным, перенос из знакового разряда теряется, результат получается в дополнительном коде.

Таким образом, применение обратного и дополнительного кода упрощает алгебраическое сложение. Сложение чисел с разными знаками заменяется сложением их соответствующих кодов, знак при этом получается автоматически.

Правило 3. Если результат арифметических действий является кодом отрицательного числа, необходимо преобразовать его в прямой код. При этом обратный код преобразуется в прямой заменой цифр во всех разрядах кроме знакового на противоположные. Дополнительный код преобразуется в прямой также, как и обратный, с последующим прибавлением единицы к младшему разряду.

Примеры.

2. Сложить двоичные числа X и Y в обратном и дополнительном кодах.

 X= 1112, Y= -112;

а) Сложим числа, пользуясь правилами двоичной арифметики:

X= Y=
-
111

11

X+Y= 100

б) Сложим числа, используя коды (таблица 8):

Таблица 8

Прямой код Сложение в обратном коде Сложение в дополнительном коде
Xпр =0’0000111 Yпр =0’0000011  
Xобр= Yобр=
+
  0’0000111

  1’1111100

+

10’0000011
              1
(X+Y)обр= 0’0000100

 

Xдоп= Yдоп=
+
  0’0000111

  1’1111101

отбрасывается

10’0000100
   
(X+Y)доп= 0’0000100

 

Так как результат сложения является кодом положительного числа (знак 0), то (X+Y)обр=(X+Y)доп=(X+Y)пр.

3. Сложить двоичные числа X и Y в обратном и дополнительном кодах

X= -1012, Y= -1102;

а) Сложим числа, пользуясь правилами двоичной арифметики:

X= Y= -101 -110
X+Y= -1011

б) Сложим числа, используя коды (таблица 9):

Таблица 9

Прямой код Сложение в обратном коде Сложение в дополнительном коде
Xпр =1’0000101 Yпр =1’0000110  
Xобр= Yобр=
+
  1’1111010

  1’1111001

+

11’1110011
              1
(X+Y)обр= 1’1110100

 

Xдоп= Yдоп=
+
  1’1111011

  1’1111010

отбрасывается

11’1110101
   
(X+Y)доп= 1’1110101

 

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

- из обратного кода:

(X+Y)обр=1,1110100 (X+Y)пр=1,0001011;

- из дополнительного кода:

(X+Y)доп=1,1110101 (X+Y)пр=1,0001010+0,0000001=1,0001011.

Таким образом, X+Y= -1011 и полученный результат совпадает с обычной записью.

3. Сложить двоичные числа X и Y в обратном и дополнительном кодах

X= -110102, Y=10011112;

а) Сложим числа, пользуясь правилами двоичной арифметики:

Y= X= 1001111  -11010
X+Y= 0110101

б) Сложим числа, используя коды (таблица 10):

Таблица 10

Прямой код Сложение в обратном коде Сложение в дополнительном коде
Xпр =1’0011010 Yпр =0’1001111  
Xобр= Yобр=
+
  1’1100101

  0’1001111

+

10’0110100
              1
(X+Y)обр= 0’0110101

 

Xдоп= Yдоп=
+
  1’1100110

  0’1001111

отбрасывается

10’0110101
   
(X+Y)доп= 0’0110101

 

Так как результат сложения является кодом положительного числа (знак 0), то (X+Y)обр=(X+Y)доп=(X+Y)пр.

4. Сложить двоичные числа X и Y в обратном и дополнительном кодах

X= -111012, Y= -1001102;

а) Сложим числа, пользуясь правилами двоичной арифметики:

X= Y=  -11101 -100110
X+Y= -1000011

б) Сложим числа, используя коды (таблица 11):

Таблица 11

Прямой код Сложение в обратном коде Сложение в дополнительном коде
Xпр =1’0011101 Yпр =1’0100110  
Xобр= Yобр=
+
  1’1100010

  1’1011001

+

11’0111011
              1
(X+Y)обр= 1’0111100

 

Xдоп= Yдоп=
+
  1’1100011

  1’1011010

отбрасывается

11’0111101
   
(X+Y)доп= 1’0111101

 

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

- из обратного кода:

(X+Y)обр=1, 0111100 (X+Y)пр=1, 1000011 (инверсия (X+Y)обр );

- из дополнительного кода:

(X+Y)доп=1, 0111101 (X+Y)пр=1,1000010+0,0000001=1,1000011 (инвер- сия (X+Y)доп , плюс единица к младшему разряду).

Таким образом, X+Y = -1000011 и полученные результаты совпадают с обычной записью.

 


Дата добавления: 2019-09-13; просмотров: 369; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!