Сложить 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).