Переполнение разрядной сетки

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

Пример: A=+0,101 [A]доп = 0,101

B=+0,110 [B]доп = 0,110

[A+B]доп = 1,011

В результате сложения двух положительных чисел получено отрицательное число, что является ошибкой. Результат неверен также и по величине.

Для обнаружения переполнения можно использовать следующие признаки:

- знаки слагаемых не совпадают со знаком суммы;

- есть перенос только в знаковый или только из знакового разряда.

Функция переполнения имеет вид: f=П1П2 + П1П2 = П1 Å П2.

Если при сложении чисел с фиксированной запятой возникло переполнение, то вырабатывается сигнал переполнения разрядной сетки и вычисления прекращаются.

Следует отметить, что при сложении чисел в дополнительном коде возможен случай, когда переполнение не фиксируется. Это происходит тогда, когда сумма модулей двух отрицательных чисел равна удвоенному весу единицы старшего разряда числа.

Пример: A=- 0,101 [A]доп = 1,011

B=- 0,011 [B]доп = 1,101

[A]доп+[B]доп = 1,000