Программирование на JAVA

В системе дополнения до двух n бит могут представлять значения из диапазона от  −2n-1 до +2n-1-1. Используя, предположим, четыре бита, можно представить чис­ла от -8 до +7 (рис. 4.1). Когда результат арифметической операции выходит за пределы представимого диапазона, происходит арифметическое переполнение. При сложении беззнаковых чисел индикатором переполнения служит перенос сn из позиции старшего разряда. Однако при сложении чисел со знаком это не сра­батывает. Возьмем, к примеру, 4-битовые числа со знаком. Если попытаться сло­жить числа +7 и +4, результирующим вектором суммы S будет 1011, а это код числа -5. Как видите, результат сложения неверный, хотя сигнал переноса из по­зиции MSB равен 0. Точно так же при сложении чисел -4 и -6 получим вектор S = 0110 = +6, то есть еще один ошибочный результат. Сигнал переноса в данном случае равен 1. Таким образом, переполнение может произойти при условии, что оба слагаемых имеют одинаковый знак. Сложение же чисел с разными знаками не вызывает переполнения.

Отсюда можно сделать следующие выводы.

1. Переполнение может произойти только при сложении чисел с одинако­выми знаками.

2. При сложении чисел со знаком сигнал переноса из позиции знакового би­та не является индикатором переполнения.


<< назад вперед >>