Формирование признака переполнения разрядной сетки

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

Признак обнаружения переполнения разрядной сетки формируется следующим образом: если при сложении двух чисел в дополнительном (обратном) коде существует перенос в знаковый разряд суммы при отсутствии переноса из её знакового разряда, или же существует перенос из знакового разряда суммы при отсутствии переноса в её знаковый разряд, то фиксируется ситуация переполнения разрядной сетки, причем в первом случае - положительное переполнение, а во втором - отрицательное.

Если и в знаковый и из знакового разряда суммы перенос существует или его нет, то переполнение отсутствует.

При положительном переполнение результат операции положительный, а при отрицательном - отрицательный.

 

Пример: сложить следующие пары чисел в дополнительном коде:

а) Х1 = +01010 б) Х1 = -01101

Х2 = +01011 Х2 = -01001

 

а) [X1] доп = 01010

[X2] доп = 01011

 
 


[X cум]доп = 10101

Результат сложения двух положительных чисел получился с отрицательным знаком, что невозможно. Но при сложение существовал перенос в знаковый разряд суммы при отсутствии его из знакового разряда. Это ситуация положительного переполнения разрядной сетки. Единица, находящаяся в знаковом разряде - это старший разряд суммы, знак которой должен быть положительным.

Ответ: [X cум] доп =[Xcум] пр = 010101 или X cум =+10101

б) [X1] доп = 10011

[X2] доп = 10111

 
 


[X cум]доп = 101010

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

Поэтому: [X] доп = 101010; [X2] пр= 110110

 

Примечание: рассмотренные в 2.6 и 2.7 примеры показывают только механизм выполнения операций и не учитывают особенности размещения чисел в памяти ЭВМ. При выполнении сложения и вычитания чисел с разрядностью n разрядность результата может быть 2n.Размер разрядной сетки ЭВМ всегда фиксирован и в случае её переполнения запоминание единицы переполнения осуществляется в отдельном регистре.