logo
Информатика_ЗФ / 2013_Информатика УМО_легпром

Примеры представления целых чисел в шестнадцатиразрядных двоичных кодах

Число

Прямой код

Обратный код

Дополнительный код

0

0000 0000 0000 0000

0000 0000 0000 0000

0000 0000 0000 0000

1

0000 0000 0000 0001

0000 0000 0000 0001

0000 0000 0000 0001

-1

1000 0000 0000 0001

1111 1111 1111 1110

1111 1111 1111 1111

20

0000 0000 0001 0100

0000 0000 0001 0100

0000 0000 0001 0100

-20

1000 0000 0001 0100

1111 1111 1110 1011

1111 1111 1110 1100

При написании программ важно определить диапазоны значений и формы представления обрабатываемой информации. Например, в языках программирования семейства BASIC (Бейсик) типы переменных INTEGER и LONG используются, соответственно, для хранения целых чисел со знаком в шестнадцатиразрядном (два байта, или полуслово) и тридцатидвухразрядном (четыре байта, или машинное слово) дополнительном коде.

Знак числа фиксируется в нулевом бите первого байта (крайний левый бит). Цифровая часть числа хранится в остальных битах поля числа, причём младший двоичный разряд числа находится в последнем, правом бите последнего байта. Переменные типа SINGLE и DOUBLE используются для хранения чисел с плавающей точкой в четырёх или восьми байтах (двойное слово) соответственно.

Знак хранится в нулевом бите, биты 1–7 отводятся под порядок числа, остальные биты используются для разрядов мантиссы. Как правило, мантисса хранится в нормальном виде, т.е. первым её разрядом не является 0.

Для упрощения операций над n-разрядными порядками чисел с плавающей запятой используетсясмещённый код, или так называемый код с избытком 2n-1. То есть значения диапазона [-2n-1; 2n-1-1] смещаются вдиапазон [0; 2n-1], что позволяет работать с порядками как с целыми без знака.

В различных преобразовательных устройствах (для кодирования положений валов, дисков и т.п.) широко используется код Грея (табл. 4). Главная особенность кода – соседние кодовые слова различаются только в одном разряде. Поэтому при последовательном переходе от числа к числу погрешность считывания не превосходит единицы младшего разряда независимо от того, в каком разряде имела место неопределённость. Для перевода числа из кода Грея в обычный двоичный код все нули и первую единицу со стороны старших разрядов оставляют без изменения. Каждый последующий разряд либо инвертируется, если число предшествующих единиц нечётно, либо остаётся без изменения.

Таблица 4