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

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

В двоичном алфавите нет никаких символов, кроме цифр 0 и 1, и необходимы новые правила для указания знака числа. Суть этих правил сводится к тому, что знак плюс изображается цифрой 0, знак минус - цифрой 1, а цифра, изображающая знак, всегда записывается самой первой в записи числа. Код числа всегда содержит изображение его знака, в отличие от математической записи, которая позволяет опускать знак плюс при изображении положительного числа. Так, код 011101, согласно этим правилам, изображает положительное (самая левая цифра - 0) двоичное число 11101.

Для более простой и экономичной реализации АЛУ применяют несколько разных кодов чисел. Это связано с тем, что разные операции в ЭВМ более просто реализуются в разных кодах.

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

Пример:

Изображаемое число Код

· +1101 (+13) 0000 1101

· +1011101 (+93) 0101 1101

· 1101 (-13) 1000 1101

(В примере коды изображаются восемью цифрами)

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

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

Примеры записи.

Изображаемое число Код

· +1101 (+13) 0000 1101

· +1011101 (+93) 0101 1101

· 1101 (-13) 1111 0010

В этом коде, как к положительным, так и к отрицательным числам можно применять одни и те же правила, а операцию вычитания (А-В) можно заменить операцией сложения (А+(-В)).

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

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

Пример:

Число -> - 101101

Прямой код -> 1101101

Обратный код -> 1010010

+1

Дополнительный -> 1010011

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

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

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

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

Арифметические действия с двоичными числами просты:

0 + 0 = 0 0 х 0 = 0
0 + 1 = 1 0 х 1 = 0
1 + 1 = 0 (единица переходит в старший разряд) 1 х 1 = 1

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

Рассмотрим сложение двух одноразрядных двоичных чисел, для чего составим таблицу сложения (таблицу истинности), в которой отра­зим значения входных чисел X1 и X2, значение результата суммирования S и значение переноса в старший разряд Р:

X1 X2 S P

Работа устройства, реализующего данную таблицу истинности, описывается следующими уравнениями: При выполнении арифметических операций в ЭВМ применяют прямой, обратный и дополнительный коды - student2.ru

При выполнении арифметических операций в ЭВМ применяют прямой, обратный и дополнительный коды - student2.ru

Очевидно, что по отношению к столбцу S реа­лизуется логическая функция «исключающее ИЛИ», т. е. При выполнении арифметических операций в ЭВМ применяют прямой, обратный и дополнительный коды - student2.ru .

Устройство, реализующее данную таблицу истинности, называют полусумматором. Оно имеет следующую логическую структуру:

При выполнении арифметических операций в ЭВМ применяют прямой, обратный и дополнительный коды - student2.ru

Рис. 6.1. Полусумматор

Поскольку полусумматор имеет только два входа, он может использоваться для суммирования лишь в младшем разряде. При суммировании двух многоразрядных чисел для каждого разряда (кроме младшего) необходимо использо­вать устройство, имеющее дополнительный вход перено­са. Такое устройство называют полным сумма­тором и его можно представить как объединение двух полусумматоров.

Для этого в каждом из разрядов применяют одноразрядный суммирующий элемент (рис.6.2.) на три входа: два — для слагаемых x1 и x2 данного разряда, а третий (y1) — для переноса 1 из соседнего младшего разряда. Устройство снабжают двумя выходами: по одному (S) выдается искомая сумма (x1+x2), а по другому (Р) переносится 1 в соседний старший разряд.

При выполнении арифметических операций в ЭВМ применяют прямой, обратный и дополнительный коды - student2.ru

Рис. 6.2. Схема и условное обозначение сумматора.

Для сложения двоичных чисел с несколькими разрядами используют двух- и трехразрядные сумматоры с последовательным переносом 1 в старшие разряды (например, микросхемы К155ИМ2 и К155ИМЗ соответственно). Быстродействие сумматоров последовательного действия лимитируется временем переноса 1 через все элементы устройства. Для улучшения этого показателя применяют сумматоры с параллельным переносом.

Наши рекомендации