Что такое прямой код в информатике

Что такое прямой код в информатике

Цель работы: познакомиться со способами замены операции вычитания операцией сложения.

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

Алгоритмы сложения и вычитания двоичных чисел сильно отличаются друг от друга. Чтобы наглядно убедиться в этом, выполним следующие действия:

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

Обратный код

Для простоты будем рассматривать четырёхбитный формат целого числа:


знак числа (0 — +; 1 — минус)

Обозначим количество разрядов в формате числа через n. В n входит и знаковый разряд.

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

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

Рассмотрим применение обратного кода на примере. Вычислим разность 5 — 2. Заменим -2 на обратный код:

Cумму 5 + (-2обр) можно записать так:

Это неравенство является условием необходимости циклического переноса. Заменив 2 4 на единицу, получим

В общем случае, если a > 0 , b > 0 , и a > b , то сложение в обратном коде выглядит так:

Итак, в общем случае условием необходимости циклического переноса служит неравенство

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

1) Случай a — b при a > 0, b > 0, a > b уже рассмотрен.

2) a — b при a > 0, b > 0, b > a. Пусть a =2 b = 5 .

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

В общем случае условие получения результата в обратном коде:

3) Переполнение может произойти, если оба слагаемых имеют одинаковые знаки. Найдём сумму 5 + 7 :

Признаком переполнения служит несовпадение знака слагаемых со знаком суммы. Сложим -5 и -7 :

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

Читайте также:  Оффлайн карты для ноутбука

4) При использовании обратного кода нуль в прямом коде представляется двумя способами: +0 и -0. Отрицательный нуль получается при замене вычитания сложением в обратном коде. Отрицательному нулю, имеющему в прямом коде вид 1000, соответствует обратный код 1111. Вычтем из двух два:

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

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

Пусть а Определение 2.
Дополнительный код положительного числа равен самому числу.
Дополнительный код отрицательного числа больше обратного на единицу:

Пример 1. Найдём a + b при a = 5 и b = -2:

Пример 2. Найдём a + b при a = -5 и b = 2:

В отличие от обратного кода в дополнительом коде при вычитании a — a получается +0. Положим a = 2 и вычислим

Задание

1. Получите у преподавателя номер вырианта набора чисел (табл. 1.)

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

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

Итак, давайте же разберем, что означают вышеописанные умные слова.

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

Обратный код — это преобразование прямого кода (или же просто инверсный). Это простая замена нолей на единицы, и наоборот.

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

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

Читайте также:  Купон супер скидки на следующую покупку

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

Такая форма представления числа называется прямым кодом.

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

Правила для образования дополнительного и обратного кода состоят в следующем:

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

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

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

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

В таблице 2.1 пpиведены десятичные числа и их двоичные пpедставления в тpех pазличных фоpмах. Интеpесно в ней вот что. Если начать счет с числа 1000 (–8) и двигаться вниз по столбцам, то в дополнительном коде каждое последующее число получается пpибавлением единицы к пpедыдущему без учета пеpеноса за пpеделы четвеpтого pазpяда Так пpосто эту опеpацию в пpямом и обpатном кодах не осуществить. Эта особенность дополнительного кода и явилось пpичиной пpедпочтителного пpименения его в совpеменных микpо и миниЭВМ.

Итак, числа, пpедставленные в дополнительном коде, складываются по пpавилам двоичного сложения, но без учета каких либо пеpеносов за пpеделы стаpшего pазpяда. Рассмотpим это на пpимеpах 2.1.

Таблица 2.1 Прямой, обратный и дополнительный коды

Пример 2.1 Двоичное сложение в дополнительном коде

Еще одним достоинством дополнительного кода является то, что нуль, в отличие от прямого и обратного кодов, представляется одним кодом. Наличие 0 в знаковом бите при представлении нуля определяет его как величину положительную, что согласуется с математической теорией чисел и соглашениями, принятыми во всех языках пpогpаммиpования.

Читайте также:  Как удалить аккаунт на икс бокс 360

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

Отметим, что при представлении с плавающей запятой отдельно кодируется мантисса и порядок числа. При этом возможно представление мантисс и порядков чисел в одном и том же или разных кодах. Например, порядок числа может быть представлен в прямом, а мантисса – в дополнительном кодах и т. п.

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

При сложении чисел, меньших единицы, в машине быть получены числа, по абсолютной величине большие единицы. Для обнаружения переполнения разрядной сетки в ЭВМ применяются модифицированные прямой, обратный и дополнительный коды. В этих кодах знак кодируется двумя разрядами, причем знаку "плюс" соответствует комбинация 00, а знаку "минус" — комбинация 11.

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

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

Ссылка на основную публикацию
Что значит спящий режим компьютера
В операционной системе Windows есть несколько режимов выключения компьютера – это обыкновенный режим, (который полностью выключает PC), режим гибернации и...
Чем открыть файл с расширением dat
После установки каких-нибудь программ, получения почты при помощи почтовых клиентов, на компьютере создаются .dat файлы. Чаще всего они почти не...
Чем отличается frontend от backend
Переводы , 13 апреля 2017 в 19:58 Мая Устинова Вы наверняка уже слышали эти модные в сфере программирования слова «фронтенд»...
Что значит сторнировать документ
Сто́рно (итал. storno — перевод на другой счёт, отвод; от stornare — поворачивать обратно) — в общем смысле возврат к...
Adblock detector