У вещественного числа X можно выделить три части: знак S, мантисса M и порядок P. Знак S числа X – это знак его мантиссы. Мантисса M представляет собой значащую часть (цифры) числа, порядок P указывает на сколько разрядов влево (отрицательный порядок) или вправо (положительный порядок) нужно перенести запятую в мантиссе M. Значение вещественного числа X можно определить по формуле
где q – основание системы счисления, в которой представлено число X.
Вещественное число считается нормализованным, если его мантисса
,
Например, у десятичного числа
нормализованная мантисса
Соответственно порядок.
Еще примеры:
Как мы знаем, числа представляются в ЭВМ в двоичной системе счисления. На рисунке 2.1 изображен стандартный формат представления чисел с плавающей точкой IEEE-754, который используется в Java.
Рисунок 2.1 – Формат IEEE-754
S – бит знака числа: если S=0, число положительное,
|
|
если S=1, число отрицательное;
E – смещенный порядок (экспонента) двоичного числа;
─ заданное смещение экспоненты (позволяет задавать
только положительную экспоненту, т.е. не выделять дополнительный бит для ее знака);
─ несмещенное (настоящее) значение порядка;
M ─ остаток мантиссы двоичного нормализованного числа с плавающей точкой.
Двоичное число с плавающей точкой создатели формата IEEE-754 считают нормализованным, если 1<=Mантисса<2. Такая мантисса всегда начинается с 1. Нет смысла хранить эту единицу в отведенных n битах. Поэтому в n битах хранят только дробную часть ─ остаток от мантиссы M (экономят один бит точности).
Формула вычисления десятичных чисел с плавающей точкой, из чисел, представленных в стандарте IEEE-754:
Интерпретации формата IEEE-754 для типа с одинарной точностью (float) и типа с двойной точностью (double) приведены на рисунке 2.2.
Заметим, что точность представления чисел определяется числом разрядов мантиссы. Число разрядов порядка определяет диапазон чисел (таблица 2.1).
Рисунок 2.2 – Интерпретации формата IEEE-754 для типов
с одинарной и двойной точностью
Пример представления вещественного числа в формате float приведен на рисунке 2.3.
Рисунок 2.3 – Пример представления вещественного
числа в формате float