Значения с плавающей точкой упорядочиваемы. В порядке от наименьшего к наибольшем
идут отрицательная бесконечность, отрицательные конечные ненулевые значения, отрицательный и положительный нули, положительные конечные ненулевые значения и положительная бесконечность.
Чем отличаются друг от друга отрицательный ноль и положительный ноль? Понятно, чт
знаком, но ведь ноль есть ноль. В чем проявляется необходимость такого использования нуля?
Ответы
Ответ 1
Значения чисел с плавающей точкой, согласно стандарту, кодируются следующим образом:
знак (1 бит) | экспонента (8 бит) | дробная часть (23 бита)
Если мы захотим представить 0 в этом формате, то экспоненту и дробную часть мы "забьем
нулями. Но ведь еще остается знак! Вот и получается, что нуля два -- один отрицательный (ведущий бит равен 1) и один положительный (ведущий бит равен 0).
В арифметических операциях они ведут себя одинаково (кроме деления). Наличие плюса и минуса обусловлено спецификой хранения.
Ответ 2
Положительный и отрицательный ноль отличаются одним единственным битом (старшим бито
двоичного представления чисел). Их необходимость диктуется разными соображениями. Вот некоторые из них (цитирую по сайту ECA):
Положительные и отрицательные нули имеют довольно важное значение. Вспомните математически
анализ. Если интерпретировать 0 как предел некоторой последовательности, то с помощь
знака нуля мы отражаем то, с какой стороны мы подошли к этому пределу. Таким образом, отрицательный ноль можно интерпретировать как то, что в процессе расчётов мы получили некое очень маленькое отрицательное число, и оно было округлено до нуля. ...
и далее
... если, например, в каких-то сложных вычислениях знаменатель дроби округлилс
до нуля, то благодаря тому, что этот ноль сохранит свой знак вы получите в ответе бесконечност
с правильным знаком. От наличия правильного знака в ответе может зависеть выполнение или не выполнение некоего важного условия в программе. Таким образом, наличие знаковых нулей и бесконечности сильно упрощает логику некоторых сложных научных расчётов.
Комментариев нет:
Отправить комментарий