Прямые, обратные и дополнительные коды

Для представления положительных и отрицательных чисел в памяти вычислительных устройств используются различные формы представления. Эти формы предназначены для упрощения проведения арифметических операций над числами.

Так называемый прямой код используется для представления положительных чисел. Например, для представления числа 6 используется прямой код 00000110.

Дополнительным кодом называют ситуацию, когда для задания отрицательного числа само число не изменяется, а к нему добавляется единица в старшем разряде. Например, число -6 будет представлено как 10000110.

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

Чтобы выполнять такое преобразование в минимальное число операций, был предложен обратный код.

Обратный код также используется для представления отрицательных чисел. При этом старший разряд получает значение 1, а остальные 7 бит инвертируются, то есть единицы заменяются нулями и наоборот. Например, число -6 будет представлено как 11111001. Обратные коды позволяют выполнять операцию "модуль" простым инвертированием байта числа. В противном случае, вместо одной команды приходится выделять из байта бит знака, и отдельно инвертировать его.

Особенностью дополнительных и обратных кодов является то, что при положительных числах они не отличаются от прямого кода.