Кодирование числовой информации

Для того, чтобы разобраться как кодируется числовая информация введем новые понятия.

Прямой код - код числа, переведенного в двоичную систему и дополненный слева таким количеством незначащих нулей, сколько требует тип данных, к которому принадлежит число.

Пример. Если рассмотреть однобайтовый формат данных, то прямой код числа 4 можно получить следующим образом: сначала переводим число в двоичную систему счисления, потом слева приписываем некоторое количество нулей, но чтобы количество символов в записи было равно 8.

410 = 1002 ---> 00000100

Таким образом, 000001002 будет являться прямым кодом числа 4.

Дополнительный код положительного числа совпадает с прямым кодом этого числа. Дополнительный код отрицательного числа получают следующим образом:

  1. записать прямой код числа;

  2. инвертировать прямой код - вместо 1 записать 0, вместо 0 - 1;

  3. прибавляем справа к инвертированному коду 1.

- 4 10 = 100 2 ---> 00000100 2 ---> 11111011 2 + 1 = 11111100 2

Теперь объясню для чего нужны были данные понятия. Дело в том, что целые числа в памяти ЭВМ представлены своим прямым кодом. Причем перевод чисел осуществляется одним способом при 8 и 16 битном формате данных, необходимо лишь дополнить число слева определенным количеством незначащих нулей. Переход к десятичной форме записи числа происходит в обратном порядке.

Вещественные числа в памяти ЭВМ представляются более сложным способом.

Форма представления вещественного числа в памяти ЭВМ, тип Double. Для представления вещественных чисел в таком формате используется 64 бита.

S

Смещенный порядок

Мантисса

63 бит

62 бит

51 бит

Теперь рассмотрим, как представить вещественное число в ЭВМ. Для этого необходимо выполнить следующие действия:

  1. переводим число в двоичную систему счисления любым удобным способом;

  2. нормализуем двоичное число, то есть записываем в виде М * 2р, где М - это мантисса числа, причем 1≤ М < 10, а р - порядок числа, записанного в двоичной системе счисления;

  3. прибавляем к порядку числа смещение, равное 1023, и получаем смещенный порядок числа, затем его необходимо перевести в двоичную форму;

  4. необходимо учесть знак заданного числа (0 - положительное, 1 - отрицательное) при окончательной записи.

 

Рассмотрим следующий пример. Запишите код действительного числа -743,375, представляя его как величину типа Double.

  1. переводим число в двоичную систему счисления 743,375 = 10011100111,0012;

  2. нормализуем полученное число, получаем: 1,0011100111001 * 29;

  3. прибавляем к порядку числа смещение, получаем: 9+1023=1032, полученное число переводим в двоичную форму 100000010002;

  4. записываем наше число, учитывая, что оно отрицательное: 11000000100001110011100100000000000000000000000000000000000000002, мы получили требуемую запись числа, для удобства можно воспользоваться таблицей и перевести его в шестнадцатеричную систему счисления. Для этого разобьем число с левого края на блоки из 4 символов и сопоставим каждому блоку шестнадцатеричное число: C08739000000000016.

При переводе числа типа Double в вещественное выполняются все те же действия только в обратном порядке.

<<<<<     >>>>>