прямой, обратный и дополнительный коды двоичного числа.
Кодомназывают такую запись числа, которая отличается от естественной и общепринятой. В математике естественной формой записи числа является запись, при которой непосредственно перед старшей значащей цифрой числа помещается знак плюс (+) или минус (-), а длина записи определяется величиной числа (иначе, количество символов, использованных для записи разных чисел, как правило, не совпадает). В ЭВМ это не так. Одной из важнейших характеристик любой ЭВМ является длина слова в ней. Длина слова определяется количеством двоичных разрядов слова. Поэтому в ЭВМ, вне зависимости от величины числа, его код всегда имеет фиксированное количество двоичных цифр.
В двоичном алфавите нет никаких символов, кроме цифр 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 |
Основным достоинством дополнительного кода является то, что в нем единообразно реализуются операции сложения чисел разных знаков (алгебраическое сложение), а операцию вычитания можно свести к операции сложения заменой знака вычитаемого на обратный.
Сложение и вычитание чисел в обратном и дополнительном кодах выполняется с использованием обычного правила арифметического сложения многоразрядных чисел, при этом разряды, изображающие знаки чисел, рассматриваются как равноправные разряды двоичного числа, которые складываются друг с другом и с единицей переноса из предыдущего разряда числа по обычным правилам арифметики. Различия же обратного и дополнительного кодов связаны с тем, что делается с единицей переноса из старшего разряда.
При сложении чисел в дополнительном коде единица переноса из старшего разряда игнорируется (теряется), а в обратном коде эту единицу надо прибавить к младшему разряду результата.
Дата добавления: 2016-01-20; просмотров: 2352;