Переполнение разрядной сетки
При выполнении некоторых арифметических операций может возникать явление переполнения разрядной сетки. Причиной переполнения может служить суммирование двух чисел с одинаковыми знаками (для чисел с разными знаками переполнение не возникает), которые в сумме дают величину, большую или равную 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