Денормализованные числа: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 9:
Для экономии памяти используется так называемая ''неявная единица'': числа в стандартном виде записываются как 1,mmm<sub>2</sub>·2<sup>k</sup>, и головная единица не сохраняется. В таком формате невозможно записать ноль — потому машинный ноль обязательно будет каким-то особым числом. Для удобства он должен иметь минимальный порядок (то есть 0).
 
То, что эти особые числа не просто нули, а 0,mmm·2<sup>−127</sup>, даёт дополнительную выгоду: сложение и вычитание чисел с плавающей точкой не приведёт к [[Исчезновение порядка|антипереполнению]] (к обнулению результата), если результатом операции не является точный 0. Другими словами, благодаря введению денормализованных чисел условия <math>a-b=0</math> и <math>a=b</math> эквивалентны. Речь идёт о ситуации, когда вычитаются два близких числа, [[Экспоненциальная запись|порядок]] которых близок к минимально возможному для нормализованных чисел. Без введения денормализованных чисел результатом такой операции мог бы быть 0, даже если числа не равны. То же относится к сложению чисел, близких по модулю, но разного знака. Это может быть нежелательно, например приводить к ошибке [[Деление на ноль|деления на ноль]], если результат используется в качестве делителя<ref>
{{cite web
| url=http://grouper.ieee.org/groups/754/meeting-minutes/02-09-19.html#underflow