Прямой код со знаком («знак + модуль») содержит дополнительный старший разряд, принимающий значение 0 для положительных и 1 для отрицательных чисел. В зависимости от полярности сигнала возможно двойное представление нуля – положительное + 0 = 0 00 … 0 и отрицательное -0 = 1 00 … 0. Это затрудняет взаимодействие цифровой системы с ЭВМ. Пример +46 = 0 101110 – 46 = 1 101110
Для представления отрицательных чисел применяют также обратный и дополнительный коды. А кодовые комбинации положительных чисел в обратном и дополнительном кодах остаются такими же, как и в прямом.
Обратный код получается дополнением прямого со знаком НДК до 2n–1 (в двоичной системе 2n записывается последовательностью из 1 и n нулей). Практиче-
ски это сводится к инвертированию исходного кодового слова – нахождению поразрядного дополнения до 2–1=1.
Пример +46 = 0 101110
–46 = 1 010001
В обратном коде также имеет место двойное представление нуля:
+ 0= 0 00 … 0 и - 0= 1 11 … 1.
Дополнительный код получают дополнением прямого со знаком НДК до 2n. На практике для этого исходный код преобразуют в обратный, а затем прибавляют единицу в младшем разряде кодового слова.
Пример +46 = 0 101110 –46 = 1 010010
Прямой код для дробных чисел, составляемый по модели
А = a1 a2 … an = ,
отображает числа с десятичным эквивалентом меньше 1 (т.е. без целой части). Кодовое слово представляет отношение (долю) величины сигнала к максимальному значению диапазона изменения 2n. Как и в НДК целых чисел, крайний справа разряд является младшим.
Дробные числа с целой частью можно записать двумя способами:
- в форме с плавающей запятой, включающей мантиссу (дробь меньше 1 с фиксированной запятой, с отличным от нуля старшим разрядом) и порядок (количество разрядов целой части десятичного числа);
- в форме
А = an … a1 a0, a-1, a-2 … a-k = ,
например, А = 110, 1012 = 1 × 22 + 1 × 21 + 0 × 20, 1 × 2-1 + 0 × 2-2 + 1 × 2-3 = 6 5/810.