Любое вещественное число с плавающей точкой можно представить в формате
(-1)s basee mantiss,
где s - знак (0 - положительный, 1 - отрицательный);
base - основание (система счисления, в которой представляется число, чаще всего 2 или 10);
e - экспонента (порядок, показатель степени).
mantiss - мантисса.
Мантисса нормализуется так, чтобы представлять собой число с плавающей точкой для которого выполняется условие: 1 <= m < b.
Для десятичной системы счисления первый разряд мантиссы находится в диапазоне от 1 до 9, для двоичного, соответственно, только 1, поэтому его можно всегда опускать, тем самым увеличивая разрядность мантиссы на 1:
123.45610 = 1.23456 * 102
0.12345610 = 1.23456 * 10-2
11101.012 = 1.110101 * 24 - для мантиссы достаточно 6 бит, т.к. первый всегда равен 1.
0.0011101012 = 1.110101 * 2-3
Представление числа с плавающей точкой в двоичном виде:
Реальная точность мантиссы - n+1 бит.
Экспонента представляется в смещенном виде. Величина смещения рассчитывается по формуле offset = 2b-1 - 1. Для b = 8 бит (single) offset = 127, для b = 11 бит (double) offset = 1023.
Значения, состоящие из одних нулей (E = 0) и одних единиц (E = 2b-1) зарезервированы для специальных применений.
Максимальная возможная экспонента Emax представима как 2b-1 и равняется offset.
Минимальная возможная экспонента Emin представима как 1 и равняется -(offset - 1).
Emin для 8 бит = -126, для 11 бит = -1022, Emax для 8 бит = 127, для 11 бит = 1023.
Специальные случаи:
E = 0 (одни нули), M = 0 (одни нули), S = 0: положительный 0 (+0).
E = 0 (одни нули), M = 0 (одни нули), S = 1: отрицательный 0 (-0).
E = 0 (одни нули), M = любое значение (кроме одних нулей, чтобы не путать с положительным и отрицательным нулями), S = любое значение: денормализованные числа.
E = 2b-1 (одни единицы), M = 0 (одни нули), S = 0 представляет собой ∞
E = 2b-1 (одни единицы), M = 0 (одни нули), S = 1 представляет собой -∞
E = 2b-1 (одни единицы), M = 1xx...xxx (первый знак - 1), S - любое: quiet NaN (qNaN)
E = 2b-1 (одни единицы), M = 0xx...xxx (первый знак - 0, остальные - хотя бы одна единица, чтобы не совпало с ∞), S - любое: signalling NaN (sNaN)

Комментариев нет :
Отправить комментарий