Прежде чем говорить о форматах вещественных числе, используемых сопроцессором, вспомним о числах с плавающей точкой, встречающихся в научных расчетах.
В общем виде эти числа можно записать следующим образом:
(знак)(мантисса)*10(знак)(порядок)
Например: -1.35*105
Здесь знак - это минус, мантисса - 1.35, порядок - 5. Порядок тоже может иметь знак. В этом представлении чисел для вас вряд ли есть что либо новое. Вспомним также такое понятие, как норамализованное представление чисел:
В чем преимущества использования нормализованных чисел? В том, что для фиксированной разрядной сетки числа (т.е. для фиксированного количества цифр в числе) нормализованные числа имеют наибольшую точность. Кроме того, нормализованное представление исключает неоднозначность - каждое число с плавающей точкой может быть представлено различными (ненормализованными) способами:
123.5678*105 = 12.35678*106 = 1.235678*107 = 0.1235678*108
Для тех, кто программировал на языках высокого уровня, знакомо следующее представление чисел с плавающей точкой:
(знак)(мантисса)E(знак)(порядок)
Например, -5.35E-2 означает число -5.35*10-2. Такое представление называется научной нотацией.
Сопроцессор 8087/80287/80387 может работать с вещественными числами в трех форматах:
Эти числа занимают в памяти, соответственно, 4, 8 или 10 байтов:
Одинарная точность
1 бит 8 бит 23 бита ---T-------T--------------------¬ ¦Зн¦Порядок¦ Мантисса ¦ L--+-------+---------------------
Двойная точность 1 бит 11 бит 52 бита ---T---------T--------------------------------¬ ¦Зн¦ Порядок ¦ Мантисса ¦ L--+---------+---------------------------------
Расширенная точность 1 бит 15 бит 64 бита ---T-------------T------------------------------------¬ ¦Зн¦ Порядок ¦ Мантисса ¦ L--+-------------+-------------------------------------
В любом представлении старший бит "Зн" определяет знак вещественного числа: