Как найти сумму в обратном коде

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

При
выполнении условия, что слагаемые

и их сумма


сложение чисел в обратном (модифицированном
обратном) коде дает сумму в обратном
(модифицированном обратном) коде.

Пример.

Пусть
требуется найти сумму двух чисел

и

в обратном коде, при оговоренных выше
условиях и при этом

.

X
= – 0,110001
[X]ob
= 1,001110

+
Y
= – 0,001001

+ [Y]ob
= 1,110110


+

X+Y= −
0,111010 11,000100

[X+Y]np=
1,110110 1

[X+Y]ob
= 1,000101

[X+Y]np
= 1,111010

Пусть
X
> 0; Y
< 0; (X+Y)
> 0. Найти сумму в дополнительном коде.

X
= + 0,111001 [X]ob
=
0,111001

Y
= − 0,010101
[Y]ob
=
1,101110

+

X + Y = +
0,100100 10,100011

[X+Y]np
=
0,100100 1

[X+Y]ob
=
0,100100

[X+Y]np
=
0,100100

2.1.3. Переполнение разрядной сетки при сложении чисел

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

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

Пример.

Пусть

,
а

.
Произведем сложение в обратном коде.

X
= – 0,110010 [X]ob
= 1,001101

+
Y
= – 0,011111

+ [Y]ob
= 1,100000

X

+

+Y=– 1,010001 10,101101

[X+Y]>1 1

0,101110

Прямого
кода для такой В результате сложения
обратных кодов

суммы
не существует. отрицательных чисел
получен код по-

ложительного
числа. Это говорит о не-

правильности
результата, т.е. о пере-

полнении разрядной
сетки.

Признаком
переполнения разрядной сетки при
сложении чисел в модифицированном
обратном или в модифицированном
дополнительном коде является образование
различных цифр в знаковых разрядах
суммы: 01 вместо 00 при сложении двух
положительных правильных дробей или
10 вместо 11 при сложении двух отрицательных
правильных дробей.

Пример.

Пусть

,
а

.
Произведем сложение в модифицированном
дополнительном коде.

X
= – 0,111001 [X]

= 11,000111

+

Y
= – 0,110100

+ [Y]

= 1,100000

X
+Y=–
1,101101 1 10,010011

[

X+Y]>1
не учитывается

10,010011

Модифицированного В
результате сложения модифицированных

дополнительного
кода дополнительных кодов двух
отрицательных

для
такой суммы чисел получен код, у
которого в знаковых

не
существует разрядах разные цифры.
Это говорит о не-

правильности
результата, т.е. о переполнении разрядной
сетки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Сумма чисел в двоичном обратном коде

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

PLANETCALC, Сумма чисел в двоичном обратном коде

Сумма чисел в двоичном обратном коде

Число 1 в двоичном обратном коде

Число 2 в двоичном обратном коде

Результат в двоичном обратном коде

Результат в двоичном прямом коде

Ссылка скопирована в буфер обмена

Похожие калькуляторы

  • • Прямой, дополнительный и обратный коды
  • • Обратная матрица по модулю
  • • Код Хаффмана для последовательности символов
  • • Код Хаффмана
  • • Сумма прописью
  • • Раздел: Информатика ( 59 калькуляторов )

PLANETCALC, Сумма чисел в двоичном обратном коде

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

Кодирование чисел в ЭВМ

Прямой код

Возможны два варианта изображения знаков чисел двоичными цифрами:

«+» обозначать «0», а «-» обозначать «1»;

«+» обозначать «1», а «-» обозначать «0».

Оба варианта равноценны.

На практике в основном используется первый вариант.

При таком решении все положительные числа с фиксированной запятой имеют вид: 0, x-1x-2… x-n, а отрицательные: 1, x-1x-2… x-n (естественно, что запятая, между знаковым разрядом и самим числом внутри ЭВМ не кодируется). Код знака помещается слева от запятой на место разряда с весом 2°. Поэтому, если знак и цифровую часть числа рассматривать как единое целое, то изображение положительных чисел не изменяется и определяется интервалом 0 ≤ Х < 1, а все отрицательные числа изображаются положительными числами [Х], расположенными в интервале 1 ≤ [Х] <2 (так называемое, представление числа в прямом коде).

Рассмотренную связь между числом Х и его изображением в прямом коде — [Х]пк можно представить в следующем виде:

 Х_{ПК} = ЗнХ. left |  Х right | (
7.1)
Пример 7.1.

0.1012пк = +(1/2 +1/8) = +5/8

1.1012пк = -5/8

Число с фиксированной точкой в прямом коде имеет такое же представление, как и указанное в (7.1). Однако, здесь следует помнить, что двоичное число с фиксированной точкой имеет формат согласно (6.2). В этом случае числу 0.1012пк соответствует десятичное число +510, а числу 1.1012пк — -510.

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

01012пк = +510

10102пк = -210

При сложении этих чисел получим

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

Методика выполнения алгебраического сложения, рациональная для применения в ЭВМ, должна удовлетворять следующим условиям:

  • обработка знаковых и цифровых разрядов суммируемых чисел X и Y должна производиться по одинаковым правилам с получением при этом правильного знака суммы;
  • должна исключаться операция прямого вычитания, и вместо неё алгебраическое суммирование чисел разных знаков должно выполняться как сложение специальных кодов суммируемых чисел;
  • должно определяться переполнение, соответствующее left | X + Y right | geq 1 при условии, что абсолютное значение X и Y меньше единицы (здесь речь идет, естественно, о числах с фиксированной запятой).

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

Обратный код

В этом коде связь между числом Х и его изображением в обратном коде — [Х]ок определяется равенством (7.2):

left[Xright]_{ОК}=begin{cases} X, text{если }Xgeq0;\ 2+X-2^{-n}, text{если }Xleq0 end{cases} (
7.2)

При Х ≥ 0:

[Х]ок = 2 + Х — 2-n = 2 — |X| — 2-n = 2 — 2-n + X.

Запишем это выражение в несколько другом виде.

Таким образом, для отрицательного числа получение обратного кода заключается в присвоении знаковому разряду кода 1 и замене в цифровой части числа 0 на 1, а 1 на 0 (выполняется left[1,overline{x}_1...overline{x}_nright]_{ДК}+2^{-n}).

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

Методика алгебраического суммирования в обратном коде при представлении исходных чисел и суммы в прямом коде

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

  1. Х > 0 и Y > 0, а X + Y < 1. В данном случае обращение к обратному коду не приводит к специфике выполнения операции, так как [Х > 0]ок + [Y > 0]ок = X + Y.
  2. Х > 0, Y < 0 и X + Y > 0.

    [Х]ок + [Y]ок = X + 2 + Y — 2-n — предварительный результат.

    Т.к. X + Y > 0, то действительный результат равен X + Y. Для того чтобы от предварительного результата перейти к действительному, необходима коррекция: вычесть 2 и прибавить 2-n к предварительному результату, т.е. в предварительном результате исключается 1 в разряде с весом 21, что равноценно вычитанию 2, и эту же единицу направляем в младший разряд предварительного результата, что равноценно прибавлению 2-n.

  3. Х > 0, Y < 0 и X + Y < 0.

    [Х]ок + [Y]ок = X + (2 + Y — 2-n). Этот результат соответствует правильному, так как согласно условию X + Y < 0. Следовательно, [X + Y < 0]ок = 2 + (X + Y) — 2-n.

  4. Х < 0, Y < 0 и |Х + Y| < 1.

    [X]ок + [Y]ок = (2 + X — 2-n ) + (2 + Y — 2-n ) — предварительный результат.

    Правильный результат [(X + Y) < 0]ок = 2 + Х + Y — 2-n.

Это определяет необходимость выполнения коррекции предварительного результата, которая аналогична рассмотренной в случае 2, т.е. вычесть 2 и прибавить 2-n к предварительному результату.

При суммировании в обратном коде чисел разных знаков возможно получение X + Y = 0. Здесь методика суммирования обратных кодов исходных чисел не изменяется, а результат получается в виде 1,1 . . .1. Например,

Получили обратный код отрицательного нуля [- 0,0 . . . 0 ]ок = 1,1 … 1. Такой результат согласуется с формулой (7.2), где указано, что X = 0 может иметь двоякое изображение: код положительного нуля и код отрицательного нуля.

На чтение 12 мин Просмотров 3.9к.

Содержание

  1. Популярное
  2. Прямой код
  3. Обратный код
  4. Дополнительный код

Содержание

1. Машинные коды

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

5. Модифицированные обратные и дополнительные коды

6. Арифметические действия в машинных кодах.

Для выполнения арифметических операций используют специ­альные коды представления чисел, которые позволяют свести опе­рацию вычитания чисел к арифметическому сложению этих кодов. Различают прямой код (П), обратный код (ОК) и дополнительныйкод (ДК). Прямой код используется для представления отрицательных чисел в памяти ком­пьютера, а также при выполнении операций умножения и деления. Обратный и дополнительный коды применяются для выполнения операции вычитания, которую заменяют операцией сложения чисел с разными знаками: а – b = а + (-b).

Прямой код целого числа. Под прямым кодом двоичного числа понимают запись самого числа. Значение знакового разряда для по­ложительных чисел определяют равным нулю (0), для отрицательных чисел — единице (1). Например, если для записи кода используется байт, то [1] :

Число Прямой код
+1101 0,0001101
-1101 1,0001101

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

Знаковый разряд —> | 0, | 0 | 0 | 0 | 1 | 1 | 0 | 1 |

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

Число Прямой код Обратный код Замечание
+11011 0,0011011 0,0011011 Число положительное, обратный и прямой коды совпадают
-11011 1,0011011 1,1100100 Число отрицательное, каждый байт, кроме знакового, изменен на противоположный

Наиболее важные свойства обратного кода чисел:

· сложение положительного числа С с его отрицательным значением в обратном коде дает т.н. машинную единицу МЕок=1|11…11, состоящую из единиц в знаковом и в значащих разрядах числа;

· нуль в обратном коде имеет двоякое значение. Он может быть как положительным числом – 0|00…00, так и отрицательным 1|11…11. Значение отрицательного числа совпадает с МЕок. Двойственное представление 0 явилось причиной того, что в современных ЭВМ все числа представляются не обратным, а дополнительным кодом.

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

Число Прямой код Обратный код Дополнительный код
+ 1110 0,0001110 0,0001110 0.0001110
-1110 1,0001110 1,1110001 1,1110010

Основные свойства дополнительного кода:

· сложение дополнительных кодов положительного числа С с его отрицательным значением дает т.н. машинную единицу дополнительного кода:

МЕдк=МЕок + 2 0 = 10|00…00, т.е. число 10 (два) в знаковых разрядах числа;

· дополнительный код называется так потому, что представление отрицательных чисел является дополнением прямого кода чисел до машинной единицы МЕдк.

Модифицированные обратные и дополнительные коды

Модифицированные обратные и дополнительные коды двоичных чисел отличаются соответственно от обратных и дополнительных кодов удвоением значений знаковых разрядов. В модифицированных обратном и дополнительном кодах под знак числа отводится не один, а два разряда: «00» соответствует знаку «плюс», «11» — знаку «минус». Любая другая комбинация («01» или «10»), получив­шаяся в знаковых разрядах, является признаком переполнения разряд­ной сетки. Сложение чисел в модифицированных кодах ничем, не от­личается от сложения в обычных обратном и дополнительном кодах.

Значение знаковых разрядов «01» свидетельствует о положительном переполнении разрядной сетки, а «10» – об отрицательном переполнении. В настоящее время практически во всех компьютерах роль сдвоенных разрядов для фиксации переполнения разрядной сетки играют переносы, идущие в знаковый и из знакового разряда.

Сложение и вычитание чисел со знаком в дополнительном коде

Если оба числа имеют n–разрядное представление, то алгебраическая сумма будет получена по правилам двоичного сложения (включая знаковый разряд), если отбросить возможный перенос из старшего разряда. Если числа принадлежат диапазону представимых данных и имеют разные знаки, то сумма всегда будет лежать в этом диапазоне. Переполнение может иметь место, если оба cлагаемых имеют одинаковые знаки.
Пример 1:

6 – 4 = ?
6 – положительное число с кодом 0110
–4 – отрицательное число с дополнительным кодом 1100

(перенос игнорируется): 6 – 4 = 2.

–5 + 2 = ?
2 – положительное число с кодом 0010
–5 – отрицательное число с дополнительным кодом 1011

Число с кодом 1101 является отрицательным, модуль этого числа имеет код 00112 = 310.

Арифметические действия в машинных кодах.

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

Требуемая операция Необходимое преобразование
А+В А+В
А-В А+(-В)
-А+В (-А)+В
-А-В (-А)+(-В)

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

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

2. Знаковые разряды участвуют в сложении так же, как и значащие.

3. Необходимые преобразования кодов производятся с изменением знаков чисел. Приписанные незначащие нули изменяют свое значение при преобразованиях по общему правилу.

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

Пример 1. Сложить два числа: А10 = 7, В10 = 16.

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

Сложение в обратном или дополнительном коде дает один и тот же результат:

Пример 2. Сложить два числа: А10 = +16, В10 = -7 в ОК и ДК.

По таблице необходимо преобразование А+(-В), в которой второй член преобразуется с учетом знака

При сложении чисел в ОК и ДК были получены переносы в знаковый разряд и из знакового разряда. В случае ОК перенос из знакового разряда требует дополнительного прибавления единицы младшего разряда (п.4 правил). В случае ДК этот перенос игнорируется.

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

Лучшие изречения: Учись учиться, не учась! 10623 – | 8001 – или читать все.

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

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

очень нужно

При выполнении арифметических операций в современных ЭВМ используется представление положительных чисел в прямом коде (ПК), а отрицательных – в обратном (ОК) или в дополнительном (ДК) кодах. Это можно проиллюстрировать схемой на рис. 2.4.

Общее правило. При алгебраическом сложении двух двоичных чисел, пред­ставленных обратным (или дополнительным) кодом, производится арифметическое суммирование этих кодов, включая разряды знаков. При возникновении переноса из разряда знака единица переноса прибавляется к МЗР суммы кодов при использовании ОК и отбрасывается при использовании ДК. В результате получается алгебраическая сумма в обратном (или дополнительном) коде.

Рассмотрим подробнее алгебраическое сложение для случая представления отрицательных чисел в ДК.

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

знаковый разряд равен нулю: результат – положительное число в ПК;

знаковый разряд равен единице: результат – отрицательное число в ДК.

Для определения абсолютного значения результата его необходимо инвертировать, затем прибавить единицу.

Вычислить алгебраическую сумму 58-23.

Вычислить алгебраическую сумму 26-34.

Вычислить алгебраическую сумму -5-1.

4.1.Какие Вы знаете позиционные системы счисления?

4.2.Сформулируйте правила перевода целых чисел из десятичной системы счисления в двоичную, восьмеричную, шестнадцатеричную;

4.3.Сформулируйте правила перевода целых чисел из двоичной системы счисления в восьмеричную, шестнадцатеричную и обратно;

4.4.Сформулируйте правила перевода вещественных (дробных и смешанных) чисел из десятичной системы счисления в двоичную;

4.5. Сформулируйте правила выполнения арифметических действий

4.6. Сформулируйте правила построения обратного кода

4.7. Сформулируйте правила построения дополнительного кода кода

1. Таблица 1.1 – Варианты заданий к лабораторной работе № 1

Исходное целое десятичное число

Исходное вещественное десятичное число

Указанные числа представить в двоичной ,восьмиричной и шестнадцетиричной системах

Популярное

  • Устройство и программирование микроконтроллеров AVR для начинающих – 143
  • Трехканальный термостат, терморегулятор, таймер на ATmega8 – 70
  • Двухканальный термостат, терморегулятор на ATmega8 – 67

Прямой код двоичного числа
Обратный код двоичного числа
Дополнительный код двоичного числа

Прямой, обратный и дополнительный коды двоичного числа — способы представления двоичных чисел с фиксированной запятой в компьютерной (микроконтроллерной) арифметике, предназначенные для записи отрицательных и неотрицательных чисел


Мы знаем, что десятичное число можно представить в двоичном виде. К примеру, десятичное число 100 в двоичном виде будет равно 1100100, или в восьмибитном представлении 0110 0100. А как представить отрицательное десятичное число в двоичном виде и произвести с ним арифметические операции? Для этого и предназначены разные способы представления чисел в двоичном коде.
Сразу отмечу, что положительные числа в двоичном коде вне зависимости от способа представления (прямой, обратный или дополнительный коды) имеют одинаковый вид.

Прямой код

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

Прямой код используется в двух вариантах.
В первом (основной) — для записи только неотрицательных чисел:

В этом варианте (для восьмибитного двоичного числа) мы можем записать максимальное число 255 (всего чисел 256 — от 0 до 255)

Второй вариант — для записи как положительных, так и отрицательных чисел.
В этом случае старший бит (в нашем случае — восьмой) объявляется знаковым разрядом (знаковым битом).
При этом, если:
— знаковый разряд равен 0, то число положительное
— знаковый разряд равен 1, то число отрицательное

В этом случае диапазон десятичных чисел, которые можно записать в прямом коде составляет от — 127 до +127:

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

Обратный код

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

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

При 8-битном двоичном числе — знаковый бит (как и в прямом коде) старший (8-й)

Диапазон десятичных чисел, который можно записать в обратном коде от -127 до + 127

Арифметические операции с отрицательными числами в обратном коде:

1-й пример (для положительного результата)
Дано два числа:
100 = 0110 0100
-25 = — 0001 1001
Необходимо их сложить:
100 + (-25) = 100 — 25 = 75

1-й этап
Переводим число -25 в двоичное число в обратном коде:
25 = 0 001 1001
-25= 1 110 0110
и складываем два числа:
0 110 0100 (100) + 1 110 0110 (-25) = 1 0 100 1010, отбрасываем старшую 1 (у нас получился лишний 9-й разряд — переполнение), = 0 100 1010
2-й этап
Отброшенную в результате старшую единицу прибавляем к результату:
0 100 1010 + 1 = 0 100 1011 (знаковый бит = 0 , значит число положительное), что равно 75 в десятичной системе

2-й пример (для отрицательного результата)
Дано два числа:
5 = 0000 0101
-10 = — 0000 1010
Необходимо их сложить:
5 + (-10) = 5 — 10 = -5

1-й этап
Переводим число -10 в двоичное число в обратном коде:
10 = 0 000 1010
-10= 1 111 0101
и складываем два числа:
0 000 0101 (5) + 1 111 0101 (-10) = 1 111 1010 (знаковый бит = 1 , значит число отрицательное)

2-й этап
Раз результат получился отрицательный, значит число представлено в обратном коде.
Переводим результат в прямой код (путем инвертирования значения, знаковый бит не трогаем):
1 111 1010 —-> 1 000 0101
Проверяем:
1 000 0101 = — 0000 0101 = -5

Обратный код решает проблему сложения и вычитания чисел с различными знаками, но и имеет свои недостатки:
— арифметические операции проводятся в два этапа
— как и в прямом коде два представления нуля — положительный и отрицательный

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

Дополнительный код — наиболее распространенный способ представления отрицательных чисел. Он позволяет заменить операцию вычитания на операцию сложения и сделать операции сложения и вычитания одинаковыми для знаковых и беззнаковых чисел.

В дополнительном коде (как и в прямом и обратном) старший разряд отводится для представления знака числа (знаковый бит).

Диапазон десятичных чисел которые можно записать в дополнительном коде от -128 до +127. Запись положительных двоичных чисел в дополнительном коде та-же, что и в прямом и обратном кодах.

Дополнительный код отрицательного числа можно получить двумя способами
1-й способ:
— инвертируем значение отрицательного числа, записанного в прямом коде (знаковый бит не трогаем)
— к полученной инверсии прибавляем 1
Пример:
Дано десятичное число -10
Переводим в прямой код:
10 = 0 000 1010 —-> -10 = 1 000 1010
Инвертируем значение (получаем обратный код):
1 000 1010 —-> 1 111 0101
К полученной инверсии прибавляем 1:
1 111 0101 + 1 = 1 111 0110 — десятичное число -10 в дополнительном коде

2-й способ:
Вычитание числа из нуля
Дано десятичное число 10, необходимо получить отрицательное число (-10) в дополнительном двоичном коде
Переводим 10 в двоичное число:
10 = 0 000 1010
Вычитаем из нуля:
0 — 0000 1010 = 1 111 0110 — десятичное число -10 в дополнительном коде

Арифметические операции с отрицательными числами в дополнительном коде

Дано: необходимо сложить два числа -10 и 5
-10 + 5 = -5
Решение:
5 = 0000 0101
-10 = 1111 0110 (в дополнительном коде)
Складываем:
1111 0110 + 0000 0101 = 1111 1011, что соответствует числу -5 в дополнительном коде

Как мы видим на этом примере — дополнительный код отрицательного двоичного числа наиболее подходит для выполнения арифметических операций сложения и вычитания отрицательных чисел.

Вывод:
1. Для арифметических операций сложения и вычитания положительных двоичных чисел наиболее подходит применение прямого кода
2. Для арифметических операций сложения и вычитания отрицательных двоичных чисел наиболее подходит применение дополнительного кода

(27 голосов, оценка: 4,89 из 5)

 

Очень часто в вычислениях должны использоваться не только положительные, но и отрицательные числа.
Число со знаком в вычислительной технике представляется путем представления старшего разряда числа в качестве знакового. Принято считать, что 0 в знаковом разряде означает знак «плюс» для данного числа, а 1 – знак «минус».
Знаковые числа
Выполнение арифметических операций над числами с разными знаками представляется для аппаратной части довольно сложной процедурой. В этом случае нужно определить большее по модулю число, произвести вычитание и присвоить разности знак большего по модулю числа.
Применение дополнительного кода позволяет выполнить операцию алгебраического суммирования и вычитания на обычном сумматоре. При этом не требуется определения модуля и знака числа.
Прямой код представляет собой одинаковое представление значимой части числа для положительных и отрицательных чисел и отличается только знаковым битом. В прямом коде число 0 имеет два представления «+0» и «–0».
Обратный код для положительных чисел имеет тот же вид, что и прямой код, а для отрицательных чисел образуется из прямого кода положительного числа путем инвертирования всех значащих разрядов прямого кода. В обратном коде число 0 также имеет два представления «+0» и «–0».
Дополнительный код для положительных чисел имеет тот же вид, что и прямой код, а для отрицательных чисел образуется путем прибавления 1 к обратному коду. Добавление 1 к обратному коду числа 0 дает единое представление числа 0 в дополнительном коде. Однако это приводит к асимметрии диапазонов представления чисел относительно нуля. Так, в восьмиразрядном представлении диапазон изменения чисел с учетом знака.

-128 <= x <= 127.

Таблица прямого, обратного и дополнительного кода 4-битных чисел.

Число Прямой код Обратный код Дополнительный код
-8 1000
-7 1111 1000 1001
-6 1110 1001 1010
-5 1101 1010 1011
-4 1100 1011 1100
-3 1011 1100 1101
-2 1010 1101 1110
-1 1001 1110 1111
00 10000000 11110000 0000
1 0001 0001 0001
2 0010 0010 0010
3 0011 0011 0011
4 0100 0100 0100
5 0101 0101 0101
6 0110 0110 0110
7 0111 0111 0111
Сложение и вычитание чисел со знаком в дополнительном коде

Если оба числа имеют n–разрядное представление, то алгебраическая сумма будет получена по правилам двоичного сложения (включая знаковый разряд), если отбросить возможный перенос из старшего разряда. Если числа принадлежат диапазону представимых данных и имеют разные знаки, то сумма всегда будет лежать в этом диапазоне. Переполнение может иметь место, если оба cлагаемых имеют одинаковые знаки.
Пример 1: 6 – 4 = ?
6 – положительное число с кодом 0110
–4 – отрицательное число с дополнительным кодом 1100

Дополнительный код(перенос игнорируется): 6 – 4 = 2.
Пример 2: –5 + 2 = ?
2 – положительное число с кодом 0010
–5 – отрицательное число с дополнительным кодом 1011

Дополнительный кодЧисло с кодом 1101 является отрицательным, модуль этого числа имеет код 00112 = 310.

Назад: Представление данных и архитектура ЭВМ

Понравилась статья? Поделить с друзьями:
  • Webgl builds are not supported on mobile devices как исправить
  • Как найти высоту в равностороннем треугольнике формула
  • Как найти амплитуду по осциллографу
  • Как найти годовую процентную ставку по кредиту
  • Как найти суррогатную мать для рождения ребенка