Арифметические основы ЦВМ
Рефераты >> Программирование и компьютеры >> Арифметические основы ЦВМ

Поэтому в ЭВМ, вне зависимости от величины числа, его код всегда имеет фиксированное количество двоичных цифр.

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

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

Так, код 011101, согласно этим правилам, изображает положительное (самая левая цифра - 0) двоичное число 11101.

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

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

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

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

Примеры.

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

· +1101 (+13) 0000 1101 ( В примерах коды )

· +1011101 (+93) 0101 1101 ( изображаются )

· 1101 (-13) 1000 1101 ( восемью цифрами )

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

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

Число

-2

-1

0

+1

+2

Код

10010

10001

00000

00001

00010

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

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

Чтобы построить более простые схемы АЛУ предложены и активно применяются обратный и дополнительный коды.

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

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

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

· +1101 (+13) 0000 1101 ( В примерах коды )

· +1011101 (+93) 0101 1101 ( изображаются )

· 1101 (-13) 1111 0010 ( восемью цифрами )

Сопоставление этой записи с прямым кодом показывает, что непосредственно восстановить абсолютную величину (модуль) отрицательного числа непросто. Однако, в этом коде как к положительным, так и к отрицательным числам можно применять одни и те же правила, а операцию А-В можно заменить операцией сложения чисел А и “минус В”.

Посмотрим, как представляется последовательные числа при переходе через ноль:

Число

-2

-1

0

+1

+2

Код

11101

11110

00000

00001

00010

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

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

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

Иными словами, процесс построения дополнительного кода отрицательного числа можно разбить на два этапа - построить обратный код, а затем из него построить дополнительный.

Проиллюстрируем это на примере.

Число -> - 101101

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

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

+1

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

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

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

· +1101 (+13) 0000 1101 ( В примерах коды )

· +1011101 (+93) 0101 1101 ( изображаются )

· 1101 (-13) 1111 0011 ( восемью цифрами )

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

2 -> 11101 + 1 = 11110

1 -> 11110 + 1 = 11111

0 -> 11111 + 1 = (1)00000 (перенос отбрасывается)

+1 -> 00000 + 1 = 00001

+2 -> 00001 + 1 = 00010

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

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


Страница: