Любое вещественное число N можно представить в виде
,
где m – мантисса числа, p – порядок, q – основание.
Мантисса и порядок могут иметь знаки. Знак мантиссы соответствует знаку числа. Основание q может не совпадать с основанием системы счисления.
В машинном представлении формат числа с плавающей запятой задается двумя полями – полем мантиссы и полем порядка. Значение основания не указывается, но подразумевается одинаковым для всех чисел. Мантисса и порядок представляются в формате с фиксированной запятой, обычно порядок – целое число со знаком, а мантисса – правильная дробь. С целью увеличения точности представления числа в заданном формате мантиссу представляют в нормализованной форме, когда старший разряд модуля мантиссы не равен нулю.
0 1 k 0 1 s
Знак p
P
Знак m
M
Существуют другие форматы представления чисел с плавающей запятой. Стандарт IEEE (Institute of Electrical and Electronics Engineers) предусматривает числа с одинарной и двойной точностью.
Форматы представлены тремя полями:
s – знак числа;
e – характеристика;
m – мантисса.
Формат с одинарной точностью занимает 32-разрядное слово, s размещается в старшем разряде, e – в следующих 8 разрядах и m – в оставшихся 23-х. Порядок p, под который отводится один байт, может принимать значения в диапазоне ±127. Характеристика в стандарте IEEE получается как порядок с избытком 127, т.е. e=p+127>0.
Мантисса числа в стандарте IEEE нормализована и лежит в диапазоне 1≤m<2. Целая часть мантиссы всегда равна 1, поэтому значение целой части не хранится, а подразумевается. Дробная часть мантиссы хранится в 23 младших разрядах мантиссы.
Формат с двойной точностью отличается длиной полей:
― для характеристики – 11 битов с избытком 1023;
― для мантиссы – 52 бита;
и размещается в 64-разрядном двоичном слове.
Вернемся к стандартному представлению чисел с плавающей запятой.
Нормализованная форма представления чисел - форма представления чисел, для которой справедливо условие
q-1≤ |m|<1. (1)
Всякий результат, не удовлетворяющий этому условию, должен быть приведен в соответствие с этой формулой. Такую операцию называют нормализацией числа. Операция нормализации числа состоит из проверки выполнимости условия (1) и сдвига изображения мантиссы в ту или иную сторону. При этом увеличивается или уменьшается порядок числа.
Пример 33. Представить в виде числа с плавающей запятой следующее число A=-10110,1111(2), при условии, что на мантиссу выделено 10 разрядов с учетом знакового, а на порядок – шесть с учетом знакового.
Проведем нормализацию числа. Так как мантисса больше единицы, будем сдвигать ее вправо (т.е. уменьшать) до тех пор, пока не получим мантиссу, удовлетворяющую (1). При этом порядок будет увеличиваться.
Пример 34. Представить в виде числа с плавающей запятой следующее число A=+0,000110010111(2), при условии, что на мантиссу выделено 10 разрядов с учетом знакового, а на порядок – шесть с учетом знакового.
Проведем нормализацию числа. Так как мантисса в старших разрядах содержит 3 нуля, то сдвинем ее влево на 3 разряда. При этом порядок уменьшится на 3 единицы.