Меню Закрыть

Алгоритм сложения чисел в обратном коде

В разд. 5.5.7 и З.6 подробно обсуждалось, как выполнить операцию алгебраического сложения чисел, уже представленных соответственно в обратном или дополнительном коде. Для этого достаточно выполнить арифметическое сложение двоичных векторов, получив истинное значение результата в коде представления операндов. При операции в обратном коде возникающий из знакового разряда перенос следует добавить к младшему разряду суммы. Переполнение обнаруживается согласно выражению (3.19).

В случае если слагаемые представлены в прямом коде, а операция выполняется в обратном или дополнительном, их следует сначала преобразовать в соответствующий код, затем выполнить сложение и сумму вновь преобразовать в прямой код — код результата всегда должен соответствовать коду исходных данных. На рис. 3.21 приведен пример алгоритма алгебраического сложения в обратном коде чисел, представленных в прямом коде, а на рис. 3.22 — алгебраическое сложение/вычитание чисел в дополнительном коде.

При рассмотрении алгоритмов использованы те же обозначения, которые были введены в разд. 3.4 для рис. 3.1. Дополнительно введем обозначения:

— модули чисел;

— перенос из знакового разряда;

— ситуации переполнения в дополнительном коде.

В алгоритме рис. 3.22 можно отметить один недостаток. При выполнении вычитания (f=1) необходимо получить дополнение второго операнда: что является арифметической операцией и требует времени, достаточного для прохождения переноса по всем разрядам числа. Для исключения дополнительной арифметической операции можно в первой операторной вершине осуществить только инверсию (логическую операцию, которая выполняется быстро), а недостающую "единицу" к младшему разряду добавить, если это необходимо, в качестве входного переноса младшего разряда в момент суммирования слагаемых. Таким образом, в двух первых операторных вершинах алгоритма рис. 3.22 следует поместить такие операторы:

Рис 3.21. Алгоритм алгебраического сложения в обратном коде

Читайте также:  Драйвер этого устройства был отключен код 32

Рис. 3.22. Алгоритм алгебраического сложения/вычитания в дополнительном коде

Дата добавления: 2015-04-25 ; Просмотров: 1933 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

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

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

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

Пример 2. Сложить два числа в обратных кодах: В = — 2(10), С = — 5(10), n=3, m=0.

+1

Дополнительный код

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

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

Пример 3. Получить дополнительный код для чисел: A=+1001,101(2), B=-1000,010(2) (n=4, m=3).

1

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

Читайте также:  Слоты для установки плат расширения agp количество

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

Пример 4. Получить прямой код из дополнительного: [B]доп.=1.0111,110.

Решение. ([B]доп.)обр.=1.1000,001

1

Как представляется нуль в дополнительном коде:

+ 1

т.е. нуль в дополнительном коде имеет единственное представление.

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

Пример 5. Сложить в дополнительных кодах числа:

[A1]доп = 0.111 [A2] доп = 1.001

[B1]доп = 1.101 [B2] доп = 0.011

Сравнивая представление чисел в различных кодах, можно сделать следующие выводы:

— перевод чисел из прямого кода в обратный осуществляется проще, чем в дополнительный;

— в дополнительном коде проще выполняется сложение, т.к. отсутствует циклический перенос.

Поэтому обратный и дополнительный коды примерно равноценны при их реализации на ЭВМ.

Дата добавления: 2016-12-18 ; просмотров: 1215 | Нарушение авторских прав

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

Читайте также:  Как направить звук в наушники

При сложении чисел в дополнительном коде единица переноса из старшего разряда игнорируется (теряется), а в обратном коде эту единицу надо прибавить к младшему разряду результата.

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.