Для хранения чисел и выполнения различных операций над ними их представляют различными кодами: прямым, обратным и дополнительным. Как уже отмечалось выше, для представления чисел со знаками в памяти ЭВМ используют прямой код. Для обозначения прямого кода числа X. , используется запись вида [Х](q)]пр .
Правило представления q-ичного кода числа в прямом коде имеет вид:
[X(q)]пр= | { | 0 xn-1xn-2...x1x0x-1...x-m, если X ?0 |
1 xn-1xn-2...x1x0, x-1... x-m, если X< 0, |
где х i- значение цифры в i-м разряде исходного кода.
Здесь старший бит несет информацию о знаке числа. Если он принимает значение 0, то знак числа "+" ; если значение 1 - то знак числа "-". Например, для двоичного кода
х(2)=+11011001 | [Х(2)]ир= 0.11011001; |
х(2) = -01101001 | [X(2)]ир= 1.01101001. |
При представлении чисел в прямом коде реализация арифметических операций в ЭВМ должна предусматривать различные действия с модулями чисел в зависимости от их знаков. Так, сложение в прямом коде чисел с одинаковыми знаками выполняется достаточно просто. Числа складываются и сумме присваивается код знака слагаемых. Значительно более сложной является операция алгебраического сложения в прямом коде чисел с различными знаками. В этом случае приходится определять большее по модулю число, производить вычитание чисел и присваивать разности знак большего по модулю числа. Для упрощения выполнения операций алгебраического сложения в ЭВМ используются специальные коды, позволяющие свести эту операцию к операции арифметического сложения. В качестве специальных в ЭВМ применяются обратный и дополнительный коды. Они образуются из прямых кодов чисел, причем специальный код положительного числа равен его прямому коду.
Для обозначения обратного кода числа X(q) используется запись вида [X(q) ] обр .
Правило представления q-ичного кода числа в обратном коде имеет вид:
[X(q)]обр= | { | 0 xn-1xn-2...x1x0x-1...x-m, если X ?0 |
1 xn-1xn-2...x1x0, x-1... x-m, если X< 0, |
Здесь инверсия цифры хi, определяемая из соотношения:
Х(2)= + 11011001, | [х(2)]пр= 0.11011001, | [X(2)]обр=0.11011001. |
х(2)=-01011101, | [Х(2)]пр= 1.01011101, | [Х(2)]обр = 1.10100010. |
[X(q)]обр= | { | 0 xn-1xn-2...x1x0x-1...x-m, если X ?0 |
1 xn-1xn-2...x1x0, x-1... x-m+q-m, если X< 0, |
х(2)=+11011001, | [Х(2)]пр= 0.11011001, | [Х(2)]доп= 0.11011001. |
х(2) = -01011101, | [Х(2)] пр = 1.01011101, | [Х(2)] доп = 1.10100011. |