Полученный
непосредственно сразу неверный результат (обратный код числа –1110)
исправляется путем переноса единицы из знакового разряда в младший разряд
суммы.
При выполнении операции может появиться число, старшие разряды которого не помещаются в отведенной для него области памяти – возникает переполнение разрядной сетки формата числа. Рассмотрим два возможных случая переполнения.
1.
Х1>0 , X2>0 и S=X1+X22n-1, где n –
количество разрядов формата числа (для однобайтового формата n=8,
2n-1=27=128)
Пример
Десятичная запись Двоичные коды
0 |
1000001 |
+ |
|
0 |
1100001 |
1 |
0100010 |
65
+
97
162
Здесь имеет место переполнение разрядной сетки: семи разрядов цифровой части недостаточно для размещения восьмиразрядной суммы (16210=101000102), поэтому старший разряд суммы оказывается в знаковом разряде и знак суммы оказывается несовпадающим со знаком слагаемых, что является признаком переполнения разрядной сетки.
2
Х1<0, X2<0 и S=|X1|+|X2|2n-1
Пример
Десятичная запись Двоичные коды
1 |
1000000 |
+ |
|
1 |
0100000 |
|
1100000 |
+1 |
-63
+
-95
-158
Здесь также знак суммы не совпадает со знаками слагаемых, что является признаком переполнения разрядной сетки.
При сложении дополнительных кодов чисел Х1 и Х2 имеют место те же четыре основных и два особых случая.
1. Х1>0 и X2>0. Аналогично случаю 1 для обратных кодов.
2. Х1>0, X2<0 и |X2|>X1.
Пример.
Десятичная запись Двоичные коды
0 |
0000011 |
+ |
|
1 |
1110110 |
1 |
1111001 |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.