Сложение чисел в модифицированном коде

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

Пример 1. Числа А2= + 0.10101 и А2 = – 0.10101представить в обратном и дополнительном

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

Пример 2. Сложить в модифицированном обратном коде двоичные числа А и В при условии: А >0, В > 0, А + В > 0.

Знак 01 говорит о том, что получен положительный результат, а перенос из старшего разряда в знаковый указывает на то, что произошло переполнение разрядной сетки. Следовательно, истинный результат получен в прямом коде и равен:

Пример 3. Сложить в модифицированном обратном коде двоичные числа А и В при условии: А 0, второе слагаемое число отрицательное:

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

Результат показывает, что сумма – число отрицательное, а разрядная сетка переполнена (1 0). Переведем дополнительный код в прямой и получим

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

Читайте также:  Программа для печати фотографий на принтере canon

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Студент – человек, постоянно откладывающий неизбежность. 10812 – | 7381 – или читать все.

91.146.8.87 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Например: X= 0,1010110

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

Здесь X и Y – коды положительных чисел, но ЭВМ воспринимает результат их сложения как код отрицательного числа (“1” в знаковом разряде). Для обнаружения переполнения разрядной сетки вводятся модифицированные коды.

Модифицированный обратный код – в нем под знак числа отводится не один, а два разряда. Форма записи чисел в модифицированном обратном коде выглядит следующим образом:

1) для положительного числа

X=; X=;

2) для отрицательного числа

X=; X=;

(обозначение читается “не X”, т.е. , если X=0, то=1 и наоборот, если X=1, то=0).

В модифицированном обратном и модифицированном дополнительном кодах под знак числа отводится не один, а два разряда: "00" соответствует знаку "+", "11" – знаку "-". Любая другая комбинация (“01” или “10”), получившаяся в знаковых разрядах служит признаком переполнения разрядной сетки. Сложение чисел в модифицированных кодах ничем не отличается от сложения в обычных обратном и дополнительном кодах.

Рассмотрим предыдущий пример, выполнив сложение в модифицированном обратном коде:

В ЭВМ в процессе работы оба знаковых разряда сравниваются. В случае появления признака переполнения машина останавливается.

Модифицированный дополнительный код также рассматривает два знаковых разряда, а во всем остальном ничем не отличается от обычного дополнительного кода, то есть:

Читайте также:  Почта майл войти в свою почту яндекс

1) для положительного числа

X=; X=;

2) для отрицательного числа

X=; X=+0,000 . . . 1;

Пример. Даны два числа: X=101001 и Y= –11010. Сложить их в дополнительном и модифицированном дополнительном кодах.

1) Переведем X и Y в дополнительный и модифицированный дополнительный код:

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

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

Рассмотрим такой пример:

То есть получаем неправильный результат как по знаку, так и в цифровой части.

Рассмотрим ещё один пример:

То есть и в этом случае происходящее переполнение в цифровой части искажает результат операции .

Можно заметить, что переполнение числовой сетки происходит в случае одинаковых знаков слагаемых, так как именно в этом случае модуль результата превосходит модули каждого из слагаемых, сам факт переполнения может быть зафиксирован изменением знака результата.

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

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

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

Читайте также:  Сколько писем можно отправлять с gmail

Существо модифицированных кодов состоит в том, что к знаковому разряду добавляется ещё один разряд:

" + " ставится в соответствие 00

" – " ставится в соответствие 11

Тогда, по определению модифицированным дополнительным кодом числа называется

Возникающий в знаковых разрядах перенос теряется. В целом же модифицированный код не отличается от простого дополнительного. Аналогично, по определению, обратным кодом является:

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

Так как в сложении по-прежнему участвуют только числа меньше единицы, то

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

искажает младший знаковый разряд.

Несовпадение знаковых разрядов после выполнения операции указывает на факт наличия переполнения .

При этом различают два типа переполнения :

  • " 01 " – положительное
  • " 10 " – отрицательное.

Первому ставится в соответствие комбинация 01 в знаковых разрядах, а второму – 10 .

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>