Прямой эфир
- 1 year ago
- 0
- 0
Прямой код — способ представления двоичных чисел с фиксированной запятой в компьютерной арифметике . Главным образом используется для записи неотрицательных чисел . В случае использования прямого кода для чисел как положительных, так и отрицательных, то есть чисел, запись которых подразумевает возможность использования знака минус (знаковых чисел), хранимые цифровые разряды числа дополняются знаковым разрядом .
В англоязычной литературе именуется .
При записи числа в прямом коде старший разряд (старший бит) объявляется знаковым разрядом (знаковым битом). Если знаковый бит равен 0, число положительное , иначе — отрицательное . В остальных разрядах (которые называются цифровыми разрядами ) записывается двоичное представление модуля числа.
Функция кодирования двоичных чисел (в том числе целых чисел и смешанных дробей) в прямом коде имеет вид:
где — номер знакового разряда (знакового бита). В частности, при кодировании правильных двоичных дробей (то есть чисел, удовлетворяющих неравенству ), и функция кодирования принимает вид:
Величина числа в прямом коде определяется по следующей формуле:
где:
Как видно из последней формулы, знаковый разряд в прямом коде не имеет разрядного веса. При выполнении арифметических операций это приводит к необходимости отдельной обработки знакового разряда в прямом коде.
Десятичное число | Двоичное число | Код прямой двоичный 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 |
В информатике прямой код используется главным образом для записи неотрицательных целых чисел. Его легко получить из представления целого числа в любой другой системе счисления . Для этого достаточно перевести число в двоичную систему счисления, а затем заполнить нулями свободные слева разряды разрядной сетки машины.
Однако при использовании для чисел со знаком у прямого кода есть два недостатка.
Выполнение арифметических операций над числами в прямом коде затруднено: например, даже для сложения чисел с разными знаками требуется кроме сумматора иметь специальный блок-« вычитатель », сложность реализации которого такая же, как и обычного сумматора . Кроме того, при выполнении арифметических операций требуется особо обрабатывать знаковый разряд, так как он не имеет веса. Также требуется обработка «отрицательного ноля». Таким образом, выполнение арифметических операций над знаковыми числами в прямом коде потребует более сложной архитектуры центрального процессора и в общем является неэффективным.
Гораздо более удобным для выполнения арифметических операций является дополнительный код .
-разрядный прямой код ( цифровых разрядов и один знаковый) позволяет представлять целые числа в диапазоне .
-разрядный прямой код ( цифровых разрядов и один знаковый) позволяет представлять правильные двоичные дроби в диапазоне .