Представление чисел с разными знаками

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

Зачем был нужен дополнительный код?

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

Как получить дополнительный код?

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

Разр.

Такая запись соответствует 8-ми разрядному прямому коду числа двенадцать. А теперь проинвертируем все разряды регистра, т.е. заменим 0 на 1 и 1 на 0. и получим обратный код.

Разр.
12обр

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

(красным цветом показаны переносы в соответствующий разряд)

Разр. c
12обр
+
12доп

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

Разр. c
12доп

Мы видим, что результирующая сумма есть двоичное число семнадцать и это действительно соответствует разности чисел двадцать девять и двенадцать.

Сложение отрицательных чисел. Сложение чисел с разными знаками.

Похожие статьи:

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector