Модифицированные обратный и дополнительный коды
При переполнении разрядной сетки, происходит перенос единицы в знаковый разряд. Это приводит к неправильному результату, причем положительное число, получившееся в результате арифметической операции может восприниматься как отрицательное (так как в знаковом разряде «1») и наоборот. Например: Здесь X и Y – коды положительных чисел, но ЭВМ воспринимает результат их сложения как код отрицательного числа («1» в знаковом разряде). Для обнаружения переполнения разрядной сетки вводятся модифицированные коды. В модифицированном обратном и модифицированном дополнительном кодах под знак числа отводится не один, а два разряда: «00» соответствует знаку «+», «11» - знаку «-». Любая другая комбинация («01» или «10»), получившаяся в знаковых разрядах служит признаком переполнения разрядной сетки. Сложение чисел в модифицированных кодах ничем не отличается от сложения в обычных обратном и дополнительном кодах. Рассмотрим предыдущий пример, выполнив сложение в модифицированном обратном коде: Комбинация «01» в знаковых разрядах означает, что произошло переполнение и получившийся результат – неверный. Рассмотрим ещё один пример. Пример. Даны два числа: X=101001 и Y= -11010. Сложить их в модифицированном дополнительном коде. 1) Переведем X и Y в модифицированный дополнительный код:
2) Выполним сложение: Переполнения нет (в знаковых разрядах «00»), поэтому полученный результат – верный (X+Y=1111)
|