Форматы чисел с плавающей точкой
Представление чисел с плавающей точкой изучается в старших классах
школы под названием "научная нотация". Например, число -1234000 можно
представить как -1.234E6. Здесь мы видим три части числа: знак "минус", мантиссу
1.234 и порядок 6. Каждое число имеет множество представлений в научной нотации.
Чтобы избежать неоднозначности, для каждого числа можно выбрать одно из
представлений и назвать его нормализованным. Тогда все остальные представления
будут ненормализованными. В частности, можно всегда выбрать представление точно
с одной ненулевой цифрой слева от десятичной точки в мантиссе (в примере - это
1.32E5). Такой выбор очень удачен, поскольку не требует записывать старшие нули
(например, 0.0000132) в мантиссе. Следовательно, у каждого числа появляется
единственное нормализованное представление.
Изложенные принципы относятся и к представлению чисел с плавающей точкой в
процессоре 80287. Различие заключается только в том, что мантисса и порядок
являются двоичными числами, а не десятичными, и порядок определяет степень числа
2, а не 10. На рис. 4.1 показаны три формата чисел с плавающей точкой,
распознаваемые процессором 80287: они соответствуют одинарной, двойной и
расширенной точности. В некоторых материалах фирмы Intel они называются также
коротким вещественным, длинным вещественным и временным вещественным. Каждый
формат состоит из трех полей: знак, порядок и мантисса. Числа в этих форматах
занимают в памяти 4,8 или 10 байт. Напомним, что у 16-битных целых чисел
процессора 80286 младший (правый) байт хранится в памяти по меньшему адресу, а
старший (левый) байт - по большему адресу. Следовательно, по мере перехода к
большим адресам мы встречаем величины все большей значимости. Все 16-битное
целое число адресуется путем указания адреса младшего байта.
Аналогичный способ применяется и для всех чисел с плавающей точкой. Байт с
наименьшим адресом является младшим байтом мантиссы. При переходе к большим
адресам мы встречаем все более значимые части мантиссы, затем младшую часть
порядка, старшую часть порядка и, наконец, байт с наибольшим адресом содержит
семь старших бит порядка и однобитное поле знака. Отметим, что упорядочение
полей числа с плавающей точкой совместимо с тем принципом, что более важные или
значимые части числа должны иметь большие адреса. Поле знака наиболее важно при
сравнении значений двух чисел с плавающей точкой. Затем по важности следует
порядок, а мантисса наименее важна. Рассмотрим поля чисел с плавающей точкой
подробнее