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

Сложить X и Y в обратном и дополнительном кодах:

а) Х= 1111 и Y= -101.

Сложим числа, пользуясь:

правилами двоичной арифметики обратным кодом дополнительным кодом
Х= 1111 Y= -101 Х+Y = 1010 Хобр = 0,0001111 Yобр = 1,1111010 10,0001001 I- ------->+1 (Хобр+ Yобр) =0,0001010 Хдоп= 0,0001111 Yдоп = 1,1111011 Единица переноса 1 0,0001010 отбрасывается (X+Y) доп = 0,0001010
  Так как результат сложения является кодом положительного чис­ла (знаку плюс (+) соответствует 0 в знаковом разряде), то (X + Y) обр=(X + Y)доп = (X + Y)пр. б) X =-101, Y =-111. Сложим числа, пользуясь:
правилами двоичной арифметики обратным кодом дополнительным кодом
Х= - 101 Y = -111 X+Y= -1100 Хобр= 1,1111010 Yобр = 1,1111000 1 1,1110010 I--------> +1 (X+Y) обр = 1,1110011 Хдоп= 1,1111011 Yдоп = 1.1111001 Единица переноса 1 1,1110100 отбрасывается (X+Y) доп = 1,1110100

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

• из обратного кода: (X+Y) обр = 1,1110011=> (X + Y) пр = 1,0001100;

• из дополнительного кода: (X+Y) доп = 1,1110100=> (X + Y) пр =

= 1,0001011 + 0,0000001, (Х + Y) пр = 1,0001100.

Получили X + Y = -1100, результат совпадает с суммой, полу­ченной по правилам двоичной арифметики.

Задание 3. Сложите числа X и Y в модифицированном обратном и модифицированном дополнительном восьмиразрядных кодах. При обнаружении переполнения увеличьте число разрядов в кодах и по­вторите суммирование. Результат переведите в прямой код. Получен­ный результат проверьте, используя правила двоичной арифметики:

а) Х= 1101101; б) Х= 111101; в) Х= -111010;

Y= 110101; Y =-111001; Y= -1100111;

г) Х= -11001; д) Х= -10101; e) X =-1101;

Y =-100011; Y = 111010; Y = -111011.

Методические указания.

Модифицированные обратный и дополнительный коды

Переполнение разрядной сетки может привести к переносу еди­ницы в знаковый разряд, что приведет к неправильному результату. Положительное число, получившееся в результате арифметической операции, может восприниматься как отрицательное, так как в зна­ковом разряде появится «1», и наоборот.

Например:

Х = 0,1011110

Y = 0.1101100

X + Y = 1,1001010

Х и Y — коды положительных чисел, но в процессе сложения в знаковом разряде появилась «1», что означает код отрицательного числа. Чтобы распознать переполнение разрядной сетки, вводятся модифицированные коды.

Модифицированный обратный код характеризуется тем, что под знак числа отводится не один, а два разряда. Форма записи чисел в модифицированном обратном коде выглядит следующим образом:

• для положительного числа

Х = Хп Хп-1... Х2 Х1 Х0... => Xмодобр = 00,ХпХп-1...Х2Х1Х0;

• для отрицательного числа

Х = Хп Хп-1... Х2 Х1 Х0... => Xмодобр = 00,ХпХп-1...Х2Х1Х0;

(X — обозначение логической операции отрицания «не X», если

Х= 0, то Х =1; Х= 1, Х = 0).

В модифицированных обратном и дополнительном кодах под знак числа отводится не один, а два разряда: «00» соответствует знаку «плюс», «11» — знаку «минус». Любая другая комбинация («01» или «10»), получив­шаяся в знаковых разрядах, является признаком переполнения разряд­ной сетки. Сложение чисел в модифицированных кодах ничем, не от­личается от сложения в обычных обратном и дополнительном кодах.

Пример.

Даны два числа: Х= 101001 и Y = -11010. Сложить их в допол­нительном и модифицированном дополнительном кодах.

Обычная запись Х = + 0101011 Y = -0011110
Обратный код Xобр =0,0101011 Yобр =1,1100001
Модифицированный обратный код Xмодобр =00,101011 Xмодобр = 11,100001
Дополнительный код Xдоп = 0,0101011 Xдоп = 1.1100010
Модифицированный дополнительный код Xмоддоп =00.101011 Xмодобр =11,100010

Выполним сложение:

Дополнительный код Модифицированный дополнительный код
Xдоп = 0,0101011 Yдоп = 1,1100010 Единица переноса 1 0,0001101 отбрасывается (X+Y) доп = 0,0001101 Xмоддоп =00,0101011 Yмоддоп = 11,1100010 Единица переноса 1 00,0001101 отбрасывается (X+Y)мод доп= 00,001101

Переполнение не наблюдается (в знаковых разрядах «00»). Ре­зультаты, полученные в обычном и модифицированном кодах, совпа­дают (Х+Y = 1101).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: