Ноль со знаком


Ноль со знаком — это ноль с соответствующим знаком . В обычной арифметике число 0 не имеет знака, поэтому -0, +0 и 0 идентичны. Однако при вычислении некоторые числовые представления допускают существование двух нулей, часто обозначаемых -0 ( отрицательный нуль ) и +0 ( положительный нуль ), рассматриваемых как равные операциями числового сравнения, но с возможным разным поведением в конкретных операциях. Это происходит в представлениях знаков со знаком, величиной и дополнением до единиц для целых чисел, а также в большинстве чисел с плавающей запятой .представления. Число 0 обычно кодируется как +0, но может быть представлено как +0, так и -0.

Стандарт IEEE 754 для арифметики с плавающей запятой (в настоящее время используемый большинством компьютеров и языков программирования, поддерживающих числа с плавающей запятой) требует как +0, так и -0. Действительную арифметику с нулями со знаком можно рассматривать как вариант расширенной прямой действительной цифры, такой что 1/−0 = − и 1/+0 = +∞; деление не определено только для ± 0/± 0 и ± ∞ / ± ∞.

Нуль с отрицательным знаком перекликается с концепцией математического анализа о приближении к 0 снизу как к одностороннему пределу , который может быть обозначен как x  → 0− , x  → 0− или x  → ↑0. Обозначение «-0» может неофициально использоваться для обозначения отрицательного числа, округленного до нуля. Концепция отрицательного нуля также имеет некоторые теоретические применения в статистической механике и других дисциплинах.

Утверждается, что включение нуля со знаком в IEEE 754 значительно упрощает достижение численной точности в некоторых критических задачах, [1] в частности, при вычислениях со сложными элементарными функциями. [2] С другой стороны, концепция нуля со знаком противоречит общему предположению, принятому в большинстве областей математики, что отрицательный нуль — это то же самое, что и ноль. Представления, допускающие отрицательный нуль, могут быть источником ошибок в программах, если разработчики программного обеспечения не принимают во внимание, что, хотя два нулевых представления ведут себя как равные при числовом сравнении, они дают разные результаты в некоторых операциях.

Двоичные целочисленные форматы могут использовать различные кодировки . В широко используемой кодировке с дополнением до двух ноль не имеет знака. В 1+7-битном представлении целых чисел со знаком и величиной отрицательный нуль представлен битовой строкой 1000 0000 . В 8-битном представлении с дополнением до единиц отрицательный нуль представлен битовой строкой 1111 1111 . Во всех этих трех кодировках положительный или беззнаковый ноль представлен как 0000 0000 . Однако последние две кодировки (с нулем со знаком) необычны для целочисленных форматов. Наиболее распространенными форматами со знаком нуля являются форматы с плавающей запятой ( IEEE 754) .форматы или подобные), описанные ниже.

В двоичных форматах с плавающей запятой IEEE 754 нулевые значения представлены смещенной экспонентой и мантиссом , равными нулю. Отрицательный ноль имеет знаковый бит, равный единице. Отрицательный нуль можно получить в результате определенных вычислений, например, в результате арифметического удаления отрицательного числа (возможны и другие результаты), или −1.0×0.0, или просто как −0.0.


Отрицательный ноль по представлению IEEE 754 в двоичном виде32