Вещественные числа

Вещественные числа могут быть представлены тремя различными форматами:

1. Короткое вещественное (одинарная точность) -32 бита (DD);

1 бит 8 бит 23 бита  
S порядок мантисса DD

2. Длинное вещественное (двойная точность) - 64 бита (DQ);

1 бит 11 бит 52 бита  
S порядок Мантисса DQ

3. Временное вещественное (расширенная точность) - 80 бит (DT);

1 бит 15 бит 64 бита  
S Порядок мантисса DT

 

1) S- поле знака: равно нулю, если число положительное и равно 1, если число отрицательное;

Для представления нуля используются нулевой порядок и нулевая мантисса, следовательно существует два нуля: положительный и отрицательный. Обычно этот факт скрыт от программиста - в командах сравнения оба пуля считаются одним числом.

2) Поле мантиссы.

В сопроцессоре принята “научная нотация“ представления чисел. При этом предполагается, что поле мантиссы представимо в виде Х.ХХ...Х, где старший бит, находящийся слева от точки должен быть не равен нулю. Для двоичной системы счисления это означает, что старший бит должен быть равен единице. Следовательно, его можно не хранить, что и сделано в форматах одинарной и двойной точности для расширения диапазона представления чисел. В формате с расширенной точностью старший бит хранится явно, так как дополнительная точность не требуется, а вычисления происходят быстрее.

3) Поле порядка. Порядок - это степень числа два, на которое надо умножить мантиссу.

Для представления отрицательных порядков в поле порядка хранится сумма истинного порядка и смещение. Для одинарной точности смещение равно 127. Для двойной точности смещение равно 1023. Для расширенной точности смещение равно 16383.

Если поле порядка составляет 8 бит как в формате с одинарной точностью, то максимальное значение порядка составляет 28-1 = 255 , то есть диапазон хранимых порядков рассчитывается следующим образом:

255 - 127 = 128 – максимальный порядок;

0 - 127 = -127 – минимальный порядок.

Аналогично можно рассчитать диапазоны хранимых порядков для форматов чисел с двойной и расширенной точностью.

Так как во всех форматах чисел минимальное и максимальное значения порядков зарезервированы для обработки особых случаев, то реальный диапазон порядка нормализованных чисел меньше на два для всех форматов чисел, то есть для чисел с одинарной точностью максимальный порядок равен 127 ,а минимальный порядок равен 126.

Формат чисел с двойной точностью позволяет получить произведение двух чисел с одинарной точностью без потери точности.

Формат чисел с расширенной точностью предназначен для представления промежуточных результатов при работе с числами в формате с двойной точностью. Существует три причины выбора 80 – разрядного представления чисел в формате с расширенной точностью:

Исследования показали, что для самых сложных для вычислений математических функций не происходит потери точности при получении окончательных результатов в формате чисел с двойной точностью, если размер мантиссы составляет не менее 64 бит, при этом порядок составляет 15 бит и общий минимальный размер двоичного числа составляет 80 бит;

Для того чтобы использовать более привычное 16-байтное представление чисел с расширенной точностью (128 бит) требуются более сложные схемы процессора или при тех же схемах будет меньшая производительность процессора;

Цель формата расширенной точности - защита промежуточных результатов. Если взять удобный 16-байтный формат, то может случиться, что все вычисления будут производиться в нем и тогда надо расширять точность для промежуточных результатов и так далее.