2.4.1. Типы данных FPU

Числовой процессор может выполнять операции с семью разными типами дан­ных, представленными в табл. 9: три целых двоичных, один целый десятичный

и три с плавающей запятой.

Вещественные числа хранятся, как и все данные, в форме двоичных чисел. Двоичная запись числа с плавающей запятой аналогична десятичной, только по­зиции справа от запятой соответствуют не делению на 10 в соответствующей сте­пени, а делению на 2. Переведем для примера в двоичный вид число 0,625:

Таблица 9. Типы данных FPU

Тип данных

Бит

Количество

значащих

цифр

Пределы

Целее слово

16

4

-32 768... 32 767

Короткое целое

32

9

-2Х109... 2х109

Длинное слово

64

18

-9Х1018... 9х10'а

Упакованное десятичное

80

18

-99..99 ... +99..9Э (18 цифр)

Короткое вещественное

32

7

1.18Х10-38... 3.40Х1038

Длинное вещественное

64

15-16

2,23x10-308... 1,79x10308

Расширенное вещественное

80

19

3.37Х10-4932... 1,18хЮ49зг

0,625 - 1/2 - 0,125 1/4 больше, чем 0,125

0,125 - 1/8 = 0

Итак, 0,625 = При записи вещественных чисел всегда выполняют нор-

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

0,625 = 0,101b - 1,01b х 2-К

Говорят, что число имеет мантиссу 1,01 и экспоненту Как можно заметить, при использовании этого алгоритма первая цифра мантиссы всегда равна 1, по­этому ее можно не писать, увеличивая тем самым точность представления числа дополнительно на 1 бит. Кроме того, значение экспоненты хранят не в виде цело­го со знаком, а в виде суммы с некоторым числом так, чтобы всегда было только положительное число и чтобы вещественные числа легко сопоставлялись -в большинстве случаев достаточно сравнить экспоненту. Теперь мы можем рас­смотреть вещественные форматы IEEE, применяемые в процессорах Intel:

□ короткое вещественное: бит 31 - знак мантиссы, биты 30-23 - 8-битная эк­спонента +127, биты 22-0 - 23-битная мантисса без первой цифры;

□ длинное вещественное: бит 63 - знак мантиссы, биты 62-52 - 11-битная эк­спонента +1024, биты 51-0 - 52-битная мантисса без первой цифры;

□ расширенное вещественное: бит 79 - знак мантиссы, биты 78-64 - 15-бит­ная экспонента +16 383, биты 63-0 - 64-битная мантисса с первой цифрой (то есть бит 63 равен 1).

FPU выполняет все вычисления в 80-битном расширенном формате, а 32-и 64-битные числа используются для обмена данными с основным процессором и памятью.

 

Кроме обычных чисел формат IEEE предусматривает несколько специаль­ных случаев, которые могут получаться в результате математических операций и над которыми также можно выполнять отдельные операции: □ положительный ноль: все биты числа сброшены в ноль; а отрицательный ноль: знаковый бит - 1, все остальные биты - нули;знаковый бит - О, все биты мантиссы -

О, все биты экспоненты - 1;

О отрицательная бесконечность: знаковый бит - 1, все биты мантиссы -О, все биты экспоненты - 1;

а денормализованныечисла: все биты экспоненты - 0 (используются для ра­боты с очень маленькими числами - до 10'16445 для расширенной точности);

^неопределенность: знаковый бит - 1, первый бит мантиссы (первые два для 80-битных чисел) - 1, а остальные - 0, все биты экспоненты - 1;

□ не-число типа SNAN (сигнальное): все биты экспоненты - 1, первый бит мантиссы - 0 (для SO-битных чисел первые два бита мантиссы - 10), а среди остальных битов есть единицы;

Q не-число типа QNAN(тихое): все биты экспоненты - 1, первый бит ман­тиссы (первые два для 80-битных чисел) - 1, среди остальных битов есть единицы. Неопределенность - один из вариантов QNAN;

а неподдерживаемое число: все остальные ситуации.

Остальные форматы данных FPU также допускают неопределенность -единица в старшем бите и нули в остальных для целых чисел, и старшие 1б бит - единицы для упакованных десятичных чисел.