Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прогр_обменка / Методические указания / Методические указания.doc
Скачиваний:
18
Добавлен:
03.03.2016
Размер:
560.64 Кб
Скачать

Типы чисел с плавающей точкой (по ieee 754)

Число одинарной точности (float)

Число́ одинарной точности— компьютерный формат представления чисел, занимающий в памяти одно машинное слово (в случае 32-битного компьютера — 32 бита или 4 байта). Используется для работы с вещественными числами везде, где не нужна очень высокая точность.

Знак

Порядок (8 бит)

Мантисса (23+1 бита)

0

0

0

0

0

0

0

0

0

11,

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

30

23

22

0

Порядок записан со сдвигом -127.  То есть чтобы получить актуально значение порядка нужно вычесть из него сдвиг. Сдвиг можно получить по формуле , где  - число бит, отведенное на хранение порядка (в случае числа одинарной точности b= 8).

Алгоритм получения представления вещественного числа в памяти ЭВМ

Покажем преобразование действительного числа для представления его в памяти ЭВМ на примере величины типа Float.

Как видно из таблицы, величина это типа занимает в памяти 4 байт. На рисунке ниже показано, как здесь представлены поля мантиссы и порядка (нумерация битов осуществляется справа налево):

S

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

Мантисса

31

30..23

22..0

Можно заметить, что старший бит, отведенный под мантиссу, имеет номер 22, т.е. мантисса занимает младшие 23 бита. Перед запятой должен стоять бит целой части мантиссы, но поскольку она всегда равна 1, здесь данный бит не требуется и соответствующий разряд отсутствует в памяти (но он подразумевается). Поэтому 23-й бит используется для представления младшей цифры порядка.

Значение порядка хранится здесь не как целое число, представленное в дополнительном коде. Для упрощения вычислений и сравнения действительных чисел значение порядка в ЭВМ хранится в виде смещенного числа, т.е. к настоящему значению порядка перед записью его в память прибавляется смещение. Смещение выбирается так, чтобы минимальному значению порядка соответствовал нуль. Например, для типа Float порядок занимает 8 бит и имеет диапазон от 2-127 до 2127, поэтому смещение равно 127(10) = 1111111(2). Наконец, бит с номером 31 указывает на знак числа.

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

  1. Перевести модуль данного числа в двоичную систему счисления;

  2. Нормализовать двоичное число, т.е. записать в виде M × 2p, где M — мантисса (ее целая часть равна 1(2)) и p — порядок, записанный в десятичной системе счисления;

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

  4. учитывая знак заданного числа (0 — положительное; 1 — отрицательное), выписать его представление в памяти ЭВМ.

Пример. Запишем код числа -312,3125.

  1. Двоичная запись модуля этого числа имеет вид 100111000,0101.

  2. Перенесем запятую на 8 позиций влево и получим

100111000,0101 = 1,001110000101 × 28.

При сдвиге запятой влево порядок будет положительным, а при сдвиге вправо – отрицательным.

  1. Получаем смещенный порядок + 8 + 127 = 135. Далее имеем 13510 = 10000111 2

  2. Окончательно

1

1 0 0 0 0 1 1 1

0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0

31

30 … 23

22 ... 0

Очевидно, что более компактно полученный код стоит записать в шестнадцатеричной системе счислений следующим образом:

1100 0011 1001 1100 0010 1000 0000 0000 2 = C39С2800 16

Соседние файлы в папке Методические указания