Interested Article - Прямой код

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

В англоязычной литературе именуется .

Представление числа со знаком в прямом коде

При записи числа в прямом коде старший разряд (старший бит) объявляется знаковым разрядом (знаковым битом). Если знаковый бит равен 0, число положительное , иначе — отрицательное . В остальных разрядах (которые называются цифровыми разрядами ) записывается двоичное представление модуля числа.

Функция кодирования двоичных чисел (в том числе целых чисел и смешанных дробей) в прямом коде имеет вид:

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

Величина числа в прямом коде определяется по следующей формуле:

где:

  • — номер разряда числа; отрицательное число — номер разряда справа от запятой; положительное число — номер разряда слева от запятой;
  • — количество разрядов справа от запятой (кол-во разрядов дробной части числа);
  • — количество разрядов слева от запятой (кол-во разрядов целой части числа);
  • — цифра в -ом разряде;
  • — основание системы счисления ; равно 2 для двоичных чисел, 10 — для десятичных , 16 — для шестнадцатеричных и т. п.;
  • — значение знакового разряда (знакового бита);
  • — число, имеющее разрядов справа от запятой (дробная часть) и разрядов слева (целая часть); учитываются только цифровые разряды.

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

Примеры

Десятичное число Двоичное число Код прямой двоичный 8-разрядный Примечание
0 0 0000 0000 Положительный ноль
-0 -0 1000 0000 Отрицательный ноль
5 101 0000 0101
10 1010 0000 1010
-5 -101 1000 0101
-16 -10000 1001 0000
9/16 0.1001 0.100 1000
-9/16 -0.1001 1.100 1000
105/128 0.1101001 0.110 1001
-5/128 -0.0000101 1.000 0101

Применение прямого кода

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

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

  • В прямом коде есть два варианта записи числа 0 (например, 00000000 и 10000000 в восьмиразрядном представлении). Второе представление называется « отрицательный ноль »
  • Использование прямого кода для представления отрицательных чисел в памяти компьютера предполагает или выполнение арифметических операций центральным процессором в прямом коде, или перевод чисел в другое представление (например, в дополнительный код ) перед выполнением операций и перевод результатов обратно в прямой код (что неэффективно).

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

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

Диапазон

-разрядный прямой код ( цифровых разрядов и один знаковый) позволяет представлять целые числа в диапазоне .

-разрядный прямой код ( цифровых разрядов и один знаковый) позволяет представлять правильные двоичные дроби в диапазоне .

См. также

Примечания

Литература

  • Behrooz Parhami. 2.1. Signed-Magnitude Representation // . — New York: Oxford University Press, 2000. — P. 19—21. — 510 p. — ISBN 0-19-512583-5 .
  • Самофалов К.Г., Романкевич А.М., Валуйский В.Н., Каневский Ю.С., Пиневич М.М. Прикладная теория цифровых автоматов. — К. : Вища школа, 1987. — 375 с.
Источник —

Same as Прямой код