21-06-2023
Прямой код — способ представления двоичных чисел с фиксированной запятой в компьютерной арифметике. Главным образом используется для записи положительных чисел.
В англоязычной литературе именуется Sign and magnitude method.
Содержание |
При записи числа в прямом коде старший разряд является знаковым разрядом. Если его значение равно 0 — то число положительное, если 1 — то отрицательное. В остальных разрядах (которые называются цифровыми разрядами) записывается двоичное представление модуля числа.
Функция кодирования двоичных чисел (в том числе целых чисел и смешанных дробей) в прямом коде имеет вид:
где — номер знакового разряда. В частности, при кодировании правильных двоичных дробей (то есть чисел ), и функция кодирования принимает вид:
Величина числа в прямом коде определяется по следующей формуле:
где:
Как видно из последней формулы, знаковый разряд в прямом коде не имеет разрядного веса. При выполнении арифметических операций это приводит к необходимости отдельной обработки знакового разряда в прямом коде.
десятичный двоичный 8-разрядный прямой ---- 0 0 00000000 положительный ноль 0 0 10000000 отрицательный ноль 5 101 00000101 10 1010 00001010 -5 -101 10000101 -16 -10000 10010000 9/16 0.1001 0.1001000 -9/16 -0.1001 1.1001000 105/128 0.1101001 0.1101001 -5/128 -0.0000101 1.0000101
В информатике прямой код используется главным образом для записи неотрицательных целых чисел. Его легко получить из представления целого числа в любой другой системе счисления. Для этого достаточно перевести число в двоичную систему счисления, а затем заполнить нулями свободные слева разряды разрядной сетки машины.
Однако, у прямого кода есть два недостатка:
Выполнение арифметических операций над числами в прямом коде затруднено: например, даже для сложения чисел с разными знаками требуется кроме сумматора иметь специальный блок-«вычитатель», сложность реализации которого такая же, как и обычного сумматора. Кроме того, при выполнении арифметических операций требуется особо обрабатывать значащий разряд, так как он не имеет веса. Также требуется обработка «отрицательного нуля». Таким образом, выполнение арифметических операций над числами в прямом коде потребует сложной архитектуры центрального процессора и в общем является неэффективным.
Гораздо более удобным для выполнения арифметических операций является дополнительный код.
-разрядный прямой код ( цифровых разрядов и один знаковый) позволяет представлять целые числа в диапазоне .
-разрядный прямой код ( цифровых разрядов и один знаковый) позволяет представлять правильные двоичные дроби в диапазоне .
Это заготовка статьи по информатике. Вы можете помочь проекту, исправив и дополнив её. |
Прямой код.