Меню сайта

Урок 113. Форматы действительных чисел

Существует три формата чисел с плавающейточкой, поддерживаемых
— — — сопроцессором 8087. — Эти форматы показаны нп Фиг. 7.1 и 7.2. — На
— — — Фиг. 7.1 показана логическая структурачисел, а на Фиг. 7.2 показано
— — — расположение отдельных частей числа, когдаоно записывается в
— — — память.

— — — — — Короткие и длинные форматы данныхсоответствуют предложенному
— — — ИИЭР стандарту для представления чисел сплавающей точкой.
— — — Короткое действительное число занимает 32бита, или четыре байта
— — — памяти. -Этот формат часто называют числом с плавающей тоской
— — — обычной точности. — Его мантисса содержит 23 бита, что поточности
— — — приблизительно соответствует шести — семидесятичным цифрам. — То
— — — есть семизначное десятичное число поточности примерно
— — — соответствует 23-битовому двоичному числу. — Восьмибитовое поле
— — — порыдка имеет значение смещения 127, или07FH. — Значение порядка
— — — лежит в диапазоне от -127 до 127, чтоприблизительно соответствует
— — — диапазону от 10**-38 до 10**38. — Оставшийся бит определяет знак
— — — всего числа. — Заметим, что внутри чисоа с плавающей точкой есть два
— — — знаковых бита. — Один из них — знак порядка, содержащийся внутри
— — — поля порядка (модифицирующийся смещением). — Другой знак показывает,
— — — что отрицательно или положительно самочисло.

— — — — — Длинный действительный формат числазанимает 64 бита, или
— — -восемь байтов памяти. — Эточисло удвоенной точности имет 52-
— — — битовую мантиссу, что по точностисоответствует примеоно 15- 16
— — — десятичным цифрам. — Одиннадцатибитовый порядок имеет диапазон от
— — — 2**-1023 до 2**1023 и значение смещения1023, или 03FFH. — В десятичной
— — — форме это соответствует диапазону от10**-307 до 10**307.
— — — — — Сопроцессор 8087 всегда хранит в памяти длинные и короткие
— — — действительные числа в нормализованномвиде. — В это означает, что
— — — первый бит мантиссы всегда единичен- ипоэтому хранить его
— — — бессмысленно, но всегда подразумевается,что он присутствует, как
— — — показано на Фиг. 7.2. — Под изображением расположения данных длинных
— — — и коротких действительных чисел показана 1перед двоичной точкой.
— — — Этот разряд отсутствует в памяти, ноизвестно, что он на самом деле
— — — существует.

— — — — — Заметим теперь, что все шесть форматовданных сопроцессора
— — — 8087, которые были рассмотрены — четырецелых и два действительных
— — — — существуют только за пределамипроцессора. — То есть сопроцессор
— — — 8087 переводит данные в эти форматы толькотогда, когда записывает
— — — их в память- кроме того, он может читатьданные, записанные в
— — — память в этих форматах. — В сопроцессоре 8087 данные всех типов
— — — хранятся в седьмом формате -промежуточном, или временном
— — — действительном. — Это означает, что программа, в которой вы
— — — работаете с сопроцессором 8087, используетпреимущества
— — — расширенного диапазона и точностивременного действительного числа
— — — только тогда, когда данные обрабатываютсявнутри процессора 8086.
— — — Другие форматы данных существуют дляудобства их хранения и
— — — представления вне процессора.

— — — — — Временное действительное число являетсянаиболее точным и имеет
— — — большой диапазон. — Оно представляется 80 битами или 10 байтами.
— — — Его мантисса имеет длину 64 бита, это даетточность, эквивалентную
— — — примерно 19 десятичным цифрам. — Мантисса в общем случае
— — — нормализована, но в некоторых случаяхможет оказаться
— — — денормализованной. — По этой причине временный действительный формат
— — — уже не пожразумевает, что старший битмантиссы равен 1. — На Фиг. 7.2
— — — старшая нормализованная единица показанаявно частью мантиссы, а не
— — — чем-то подразумеваемым. — Пятнадцатибитовое поле порядка смещается
— — — значением 16383, или 03FFFH. — Такой порядок допускает диапазон
— — — изменения чисел от 2**-16383 до 2**16383,или примерно от 10**-4932 до
— — — 10**4932. -Поскольку сопроцессор 8087 может денормализовать мантиссу
— — — временного действительного числа, нижняяграница его расширяется
— — — еще дальше. — Так как число денормализов
ано, в мантиссе есть
— — — незначащие нули, и это позволяетизобразить даже меньшее число, чем
— — — допускает диапазон значений порядка. — Например, давайте снова
— — — рассмотрим простую форму числа с плавающейточкой, содержащую
— — — 3-битовое поле порядка и 4-битовуюматиссу. — Наименьшее
— — — положительное число, которое здесь можетбыть представлено, есть

— — — — — 1.000*10000B=1*2**-3=1/8

— — — — — В этом примере подразумевается: — что значение порядка смещено
— — — на значение 3. — Если теперь мя денормализуем мантиссу, то сможем
— — — представить даже меньшее число, например

— — — — — 0.100*10000B=1/2*2**-3=1/16

— — — — — а наименьшее положительное число, котороеможно представить
— — — денормализацией мантиссы есть

— — — — — 0.001*10000B=1/8*2**-3=1/64

— — — — — Денормализация мантиссы расширяет нижнююграницу диапазона
— — — чисел.

— — — — — Этот дополнительный диапазон дается недаром. — Поскольку мы
— — — ввели незначащие нули, точность мантиссыуменьшилась. — Временный
— — — действительный формат числа даетвозможность пожертвовать точностью
— — — ради расширения диапазона числа, когда этонеобходимо. — Такая
— — — возможность требуется в первую очередь напромежуточных шагах
— — — длительных вычислений. — Иногда прикладная программа вычитает два
— — — примерно одинаковых числа передвыполнением другой операции, и
— — — результат много меньше, чем любое изисходных чисел. — Эта разность
— — — может оказаться очень важной. — В таких специальных случаях
— — — вычисления можно продолжать, допускаярасширение диапазона
— — — представления числа. — Единственной альтернативой здесь была бы
— — — установка нулевого результата вычитания, ав этом случае всякая
— — — значимость теряется.

Категория: Программирование на Ассемблере | Дата: 17.03.13

Меню раздела
Блок