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