Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вычМатКурсач / 1 Международный стандарт представления чисел с плавающей точкой в ЭВМ.docx
Скачиваний:
53
Добавлен:
18.03.2015
Размер:
107.27 Кб
Скачать

Специальные значения

В стандарте IEEE предложено 3 вида специальных значений - NaN, ноль со знаком и бесконечность со знаком.

В таблице ниже приведены представления этих специальных значений в стандарте IEEE.

Специальные значения

Показатель степени

Дробная часть мантиссы

Обозначение

f=0

f=0

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

Именно для таких случаев в стандарте IEEE существуют специальные значения.

NaN

NaN (Not a number) используется стандартом IEEE для обработки ситуаций вида извлечения корня из отрицательного числа.

Приведём небольшую таблицу, демонстрирующую случаи возвращения NaN.

Операции, возвращающие NaN

Операция

Случай, когда возникает NaN

+

/

REM

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

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

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