Кодирование числовой информации
Для того, чтобы разобраться как кодируется числовая информация введем новые понятия.
Прямой код - код числа, переведенного в двоичную систему и дополненный слева таким количеством незначащих нулей, сколько требует тип данных, к которому принадлежит число.
Пример. Если рассмотреть однобайтовый формат данных, то прямой код числа 4 можно получить следующим образом: сначала переводим число в двоичную систему счисления, потом слева приписываем некоторое количество нулей, но чтобы количество символов в записи было равно 8.
410 = 1002 ---> 000001002
Таким образом, 000001002 будет являться прямым кодом числа 4.
Дополнительный код положительного числа совпадает с прямым кодом этого числа. Дополнительный код отрицательного числа получают следующим образом:
записать прямой код числа;
инвертировать прямой код - вместо 1 записать 0, вместо 0 - 1;
прибавляем справа к инвертированному коду 1.
- 4 10 = 100 2 ---> 00000100 2 ---> 11111011 2 + 1 = 11111100 2
Теперь объясню для чего нужны были данные понятия. Дело в том, что целые числа в памяти ЭВМ представлены своим прямым кодом. Причем перевод чисел осуществляется одним способом при 8 и 16 битном формате данных, необходимо лишь дополнить число слева определенным количеством незначащих нулей. Переход к десятичной форме записи числа происходит в обратном порядке.
Вещественные числа в памяти ЭВМ представляются более сложным способом.
Форма представления вещественного числа в памяти ЭВМ, тип Double. Для представления вещественных чисел в таком формате используется 64 бита.
|
S |
Смещенный порядок |
Мантисса |
|
63 бит |
62 бит |
51 бит |
Теперь рассмотрим, как представить вещественное число в ЭВМ. Для этого необходимо выполнить следующие действия:
переводим число в двоичную систему счисления любым удобным способом;
нормализуем двоичное число, то есть записываем в виде М * 2р, где М - это мантисса числа, причем 1≤ М < 10, а р - порядок числа, записанного в двоичной системе счисления;
прибавляем к порядку числа смещение, равное 1023, и получаем смещенный порядок числа, затем его необходимо перевести в двоичную форму;
необходимо учесть знак заданного числа (0 - положительное, 1 - отрицательное) при окончательной записи.
Рассмотрим следующий пример. Запишите код действительного числа -743,375, представляя его как величину типа Double.
переводим число в двоичную систему счисления 743,375 = 10011100111,0012;
нормализуем полученное число, получаем: 1,0011100111001 * 29;
прибавляем к порядку числа смещение, получаем: 9+1023=1032, полученное число переводим в двоичную форму 100000010002;
записываем наше число, учитывая, что оно отрицательное: 11000000100001110011100100000000000000000000000000000000000000002, мы получили требуемую запись числа, для удобства можно воспользоваться таблицей и перевести его в шестнадцатеричную систему счисления. Для этого разобьем число с левого края на блоки из 4 символов и сопоставим каждому блоку шестнадцатеричное число: C08739000000000016.
При переводе числа типа Double в вещественное выполняются все те же действия только в обратном порядке.
<<<<< >>>>>