Страницы

Поиск по вопросам

понедельник, 25 ноября 2019 г.

Чем отличаются друг от друга отрицательный ноль и положительный ноль?



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


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


Ответы

Ответ 1



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

Ответ 2



Положительный и отрицательный ноль отличаются одним единственным битом (старшим бито двоичного представления чисел). Их необходимость диктуется разными соображениями. Вот некоторые из них (цитирую по сайту ECA): Положительные и отрицательные нули имеют довольно важное значение. Вспомните математически анализ. Если интерпретировать 0 как предел некоторой последовательности, то с помощь знака нуля мы отражаем то, с какой стороны мы подошли к этому пределу. Таким образом, отрицательный ноль можно интерпретировать как то, что в процессе расчётов мы получили некое очень маленькое отрицательное число, и оно было округлено до нуля. ... и далее ... если, например, в каких-то сложных вычислениях знаменатель дроби округлилс до нуля, то благодаря тому, что этот ноль сохранит свой знак вы получите в ответе бесконечност с правильным знаком. От наличия правильного знака в ответе может зависеть выполнение или не выполнение некоего важного условия в программе. Таким образом, наличие знаковых нулей и бесконечности сильно упрощает логику некоторых сложных научных расчётов.

Комментариев нет:

Отправить комментарий