Существуют три основных кода для представления чисел в цифровых процессорах: прямой код, обратный код, дополнительный код. Рассмотрим положительные и отрицательные числа с фиксированной точкой
Код числа содержит m=b+1 разрядов.
Прямой код. Условное обозначение числа А, представленного в прямом коде: [A]пр. Правило кодирования: в знаковый разряд кода записывается 0 (для положительных чисел), или 1 (для отрицательных), числовые разряды кода соответствуют числовым разрядам (дробной части) исходного числа.
Условная точка в записи числа отделяет (для наглядности записи) знаковый разряд от числовых.
Дополнительный код.. Условное обозначение [A]доп.
Правило кодирования положительных чисел: дополнительный код положительного числа совпадает с прямым кодом: [A]доп.= [A]пр.
Правило кодирования отрицательных чисел: В знаковый разряд кода записывается 1, числовые разряды исходного числа инвертируются (0 заменяется на 1и наоборот) и к младшему числовому разряду прибавляется 1:
[1]
Для перевода дополнительного кода отрицательного числа в прямой код необходимо проинвертировать числовые разряды дополнительного кода и добавить 1 к младшему разряду.
|
|
Следует отметить, что дополнительному коду [A]доп=1.000….0 соответствует число А=-1, которое нельзя перевести в дополнительный код по алгоритму [1].
Обратный код. Условное обозначение [A]обр.
Правило кодирования положительных чисел: обратный код положительного числа совпадает с прямым кодом: [A]обр.= [A]пр.
Правило кодирования отрицательных чисел: В знаковый разряд кода записывается 1, числовые разряды исходного числа инвертируются:
[2]
В таблице показано представление десятичных чисел с помощью 3-разрядного кода (m=3, b=2). Поскольку количество комбинаций двоичного кода равно 2m=8, с помощью 3-разрядного кода можно представить не более 8 чисел.
Особенности представления чисел в дополнительном коде: однозначное представление 0 и соответствие коду 1.00 числа A=-1.
Десятич. число | 0.75 | 0.50 | 0.25 | -0.25 | -0.50 | -0.75 | -1.0 | ||
Прямой код | 0.11 | 0.10 | 0.01 | 0.00 | 1.00 | 1.01 | 1.10 | 1.11 | - |
Обратный код | 0.11 | 0.10 | 0.01 | 0.00 | 1.11 | 1.10 | 1.01 | 1.00 | - |
Дополнит. код | 0.11 | 0.10 | 0.01 | 0.00 | 1.11 | 1.10 | 1.01 | 1.00 |