<<
>>

Специальные значения стандарта IEEE 754

Как уже отмечалось, в стандарте IEEE 754 имеются средства, которые позволя- ют получать правильные результаты или результаты с небольшой ошибкой даже в случае выхода полученного во время вычислений значения за границы разряд- ной сетки.
Для этого предусмотрено формирование в полях специальных значений, которые образуются с помощью нулевого 000...002 и максимального lll...ll2 ЛГ-битовых порядков. К специальным значениям относятся:

? денормализованные вещественные числа;

? плюс и минус нуль;

? плюс и минус бесконечность;

? нечисла;

? неопределенности.

В табл. 2.6 приведены сводка специальных значений стандарта и отличительные признаки их кодов.

Таблица 2.6. Специальные значения стандарта IEEE 754 Специальное значение Признак

Денормализованное число Любой знак, нулевой код машинного порядка 000...002

и любой ненулевой код мантиссы

Любой знак, нулевой код машинного порядка 000...002 и нулевой код мантиссы

Любой знак, код порядка из одних единиц 111...112 и нулевой код мантиссы

Любой знак, код порядка из одних единиц lll...ll2 и любой ненулевой код мантиссы

Неопределенность Код знака «минус», код порядка из одних единиц 111...112,

первая цифра дробной части мантиссы единица, остальные нули 1,1000...002

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

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

Для повышения точности вычислений при работе с маленькими числами в стан- дарте предусмотрена возможность использования так называемого мягкого ис- чезновения порядка (мягкого антипереполнения).

Суть этого подхода состоит в трактовке кодов с нулевым порядком 000...002 как специальных значений, которые принято называть денормализованными числами. При этом исполь- зуется следующее правило: если код содержит все нули в отведенных под по- рядок разрядах 000...002 и ненулевую мантиссу, то считается, что порядок числа равен 000...0012, а явно не указанная в поле целая часть мантиссы принимает- ся равной нулю.

Таблица 2.7. Мягкое исчезновение порядка

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

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

1.0 ∙ 2^126 « 1,17 ∙ 10-38, а второй — код предшествующего ему большего числа

1.1 ∙ 2^126 « 1,3 ∙ 10'38. В четвертом и пятом столбцах код порядка равен нулю, 000000002. Из этого следует, что в полях находятся специальные значения, для которых действуют особые правила определения значений чисел. Для них поря- док считается равным минимально возможному 0000 00012, а неявный бит целой части считается равным нулю. Следовательно, мантисса ненормализованная, и ее код фактически совпадает с числом. Применяя эти правила к коду в четвертом столбце, получим число 0,1 ∙ 2^126 « 5,9 ∙ 10 39, а код из пятого столбца даст число 0,01 ∙ 2-126 - 0,1 - 2-127 - 7,32 ∙ 10'40.

Очевидно, что последовательное, разряд за разрядом, перемещение направо положения первой значащей единицы в мантиссе приводит к постепенному уменьшению кодируемого значения. Последним в этом процессе является код О|ОООООООО|ОООООООООООООООООООООО 12 с нулевым порядком и ненулевой мантиссой 0,1 ∙ 2^22, который соответствует числу со значением 1,0 ∙ 2~23 ∙ 2^126 « 1,40 ∙ 10-45. Таким образом, вместо стандартного резкого перехода от наименьшего нормали- зованного числа к нулевому значению, которое считается округлением всех чисел с порядком, меньшим минимально возможного, в данном подходе диапазон по- рядков постепенно, «мягко» расширяется в отрицательную сторону за счет умень- шения точности мантиссы.

Рассмотрим пример, когда использование мягкого исчезновения порядка позво- ляет получить правильный результат, в то время как резкий переход к нулю дает ошибку. Пусть даны два числа хиу, требуется получить разность у - х, как-то ее использовать, а затем вернуться к исходному значению г/, то есть затем фактиче- ски нужно вычислить (у - х) + X. Если разность у - х принадлежит множеству допустимых для используемого поля значений, то проблем не возникает. В про- тивном случае могут появиться ошибки. Пусть, например, получены значения у = 1,5 ∙ 1О^38, X = 1,2 ∙ 1О^38. В соответствии с табл. 2.5 оба эти числа могут быть закодированы в четырехбайтовом поле, но их разность у - х, равная 0,3 ∙ 10 38, уже выходит за границы разрядной jсетки. Если в компьютере реализовано стан- дартное резкое исчезновение порядка, то эта разность признается машинным ну- лем, у - X = 0, и конечный результат окажется ошибочным, так как сложение нуля с числом X даст в результате х. Если же в компьютере реализован подход стандарта IEEE 754 с мягким исчезновением порядка, то вычисление разности у - X приведет к специальному денормализованному значению 0,3 ∙ 10 38, дальней- шее сложение которого с числом х даст правильнi⅛й результат у = 1,5 ∙ 1О^38.

Выполняя соответствующие расчеты для восьмибайтовых и десятибайтовых полей, найдем, что для них предельные денормализованные значения равны 1,0 . 2~52 - 2-1022 - 5,18 ∙ 10-318 и 1,0 ∙ 2^63 ∙ 2^16382 - 3,64 ∙ 1О^4951 соответственно. Именно эти значения приведены в столбце Мiп* в табл. 2.5 как минимально воз- можные ненормализованные числа для полей соответствующей длины.

Дальнейшее уменьшение кода мантиссы приводит к коду с нулевым порядком и нулевой мантиссой, который также относится к специальным значениям и по определению считается кодом нуля. В формате с плавающей точкой допускается наличие двух закрепленных за нулем кодов: кода 00 00 00 0016, соответствующе- го числу +010, и кода 80 00 00 0016, соответствующего числу —010. Такие же специ- альные коды предусмотрены и для восьми- и десятибайтовых полей. В отличие от кодирования целого нуля, то есть нуля в формате с фиксированной точкой, наличие двух кодов у вещественного нуля, то есть нуля в формате с плавающей точкой, в силу приближенного характера вычислений и концепции машинного нуля не вызывает сложностей в расчетах.

Ранее обсуждались предусмотренные в стандарте меры, обеспечивающие вы- полнение расчетов в случае исчезновения порядка, то есть когда порядок ста- новится меньше, чем минимально возможный для данной разрядной сетки. Эти возможности базируются на специальной интерпретации кодов с нуле- вым машинным порядком 000...002. К сожалению, организовать нечто подобное, то есть какой-либо плавный выход за разрядную сетку в сторону больших порядков невозможно. Поэтому разработчики стандарта предложили рассмат- ривать коды с машинными порядками, равными lll...ll2, и с равной нулю ман- тиссой как специальные значения, имеющие смысл плюс или минус бесконечно- сти в зависимости от кода знака. Итак, находящийся в четырехбайтовом поле код 0111 1111 1000 0...002 или 7F 80 00 0016, считается кодом плюс бесконечности (+°°), а код 1111 1111 1000 0...002 или FF 80 00 0016 считается кодом минус бес- конечности (-∞).

Такие же специальные значения предусмотрены для восьми- и десятибайтовых полей. Знаковые нули и знаковые бесконечности могут ис- пользоваться в расчетах как вместе с обычными, то есть нормализованными, так

и с денормализованными числами. При этом бесконечности трактуются в аффин- ном смысле, то есть для любого конечного числахверно неравенство -∞ 0, тогда л:/(+∞) = +0, х/(-∞) = -0, +°° ∙ х = +°°,

-оо . X = — оо, (+oo) ∙ (+°°) — +°° И Т. Д.

Однако операции типа ∞/∞ и 0/0, как и в обычном анализе, не имеют смысла. Чтобы обеспечить возможность продолжения вычислений с получением резуль- татов, которые в таких случаях все-таки могут каким-то образом трактоваться, в стандарте IEEE 754 введены специальные значения нечисло — NаN (от Not a Number). Код нечисла может иметь любой знак, машинный порядок должен со- стоять только из единиц lll...ll2, а код мантиссы может быть любым ненулевым кодом. Следовательно, существует много кодов различных нечисел. За различ- ными нечислами разработчики компьютеров и программисты могут закреплять различный смысл и при их появлении в вычислениях делать соответствующие выводы. В частности, нечисло, имеющее знак «минус» и мантиссу 1,1000...000 (с первой значащей цифрой дробной части равной единице и всеми остальны- ми нулями), считается неопределенностью, возникающей при делении на нуль.

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

ВНИМАНИЕ -------------------------------------------------------------------------------------------------------

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

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

2.3.4.

<< | >>
Источник: Степанов А. Н.. Архитектура вычислительных систем и компьютерных сетей. 2007

Еще по теме Специальные значения стандарта IEEE 754:

  1. § 84 Значение писцовых книг и межевых актов по делам специального межевания и отношение их к вотчинному праву. – Может ли разрешенный по межевым правилам вопрос о владении внутри общей дачи служить к предосужде- нию вотчинного права? – Случаи, в коих требуются доводы от перводачников. – Нынешнее значение писцовых книг как доказательства в делах вотчинных
  2. Статья 754. Обеспечение выполнения договора пожизненного содержания (ухода)
  3. СТАНДАРТ
  4. § 5. Международно-правовые стандарты
  5. Два стандарта, мешающих жить
  6. § 24 Особое значение целого семейства в торгующем купечестве и в бывших податных сословиях. – Финансовое и хозяйственное значение семейного раздела. – Особое значение семейства в отправлении рекрутской повинности. – Семейная община у Индусов.
  7. Сергей Александрович Орлов. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения, 2013
  8. 15.5. Міжнародно-правові стандарти у сфері праці та трудових відносин
  9. Статья 288. Нарушение правил, норм и стандартов, касающихся обеспечения дорожного движения
  10. § 85 Значение бесспорного владения. – Отличие бесспорного владения от давности владения. – Установление земской давности и применение оной к делам межевым. – Может ли давность применяться к совместному и к чересполосному владению по предметам вотчинного права. – Применение давности к делам специального размежевания
  11. § 8 Значение формы в договоре. – Римская стипуляция и правила иностранных законодательств. – Историческое значение формы в русском законодательстве. – Правила о совершении актов. – Отсутствие руководящего начала. – Колебания судебной прак- тики и наклонность ее к формализму. – Значение явки в актах договора. – Домашние акты. – Словесные соглашения. – Можно ли доказывать их свидетелями? – Гербовый сбор.
  12. § 40 Условия об очистках. – Понятие об очистке (garantie). – Практическое значение иска об очистке. Особенное значение вотчинной очистки (gar. reelle)
  13. § 3 Содержание обязательства. – Положительное и отрицательное. – Обязательство дать или исполнить. – Взаимное обязательство. – Нераздельные и делимые обязательства. – Действие возможное и невозможное; известное и неизвестное. – Разделительное обязательство и значение выбора. – Определение предмета родом, видом и особью. – Значение денег.
  14. § 37 История вотчинной записки в России. – Явка актов в приказах. – Справка. – Юридическое и финансовое ее значение. – Аналогия нашей формы с западными. – Изменение старой формы при Петре I. – Новый крепостной порядок и новое значение справки и отказа. – Форма нового отказа и ввода во владение
  15. СПОСОБНОСТЬ СПЕЦИАЛЬНАЯ
  16. ПЕДАГОГИЯ СПЕЦИАЛЬНАЯ