Введение

Различение положительного и отрицательного нуля.
Подписываемый ноль — это ноль, имеющий связанный с ним знак. В обычной арифметике число 0 не имеет знака, поэтому −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+7 бит отрицательный ноль представлен битовой строкой. В 8-битном представлении дополнительного кода отрицательный ноль представлен битовой строкой. Во всех этих трех кодировках положительный или беззнаковый ноль представлен. Тем не менее, последние два кодирования (с использованием знакового нуля) редко встречаются в целочисленных форматах. Наиболее распространенные форматы с использованием знакового нуля – это форматы чисел с плавающей точкой (форматы IEEE 754 или аналогичные), описанные ниже. В двоичных форматах чисел с плавающей точкой IEEE 754 нулевые значения представляются смещенным экспонентом и мантиссой, оба равные нулю. У отрицательного нуля знаковый бит установлен в единицу. Отрицательный ноль может быть получен в результате определенных вычислений, например, в результате арифметического переполнения при работе с отрицательным числом (возможны и другие результаты), или −1.0×0.0, или просто как −0.0. В десятичных форматах чисел с плавающей точкой IEEE 754 отрицательный ноль представляется экспонентой, являющейся любым допустимым значением в диапазоне для данного формата, мантиссой, равной нулю, и знаковым битом, установленным в единицу.

Свойства и обращение

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

Обозначение

В системах, включающих как знаковые, так и беззнаковые нули, обозначения +0 и -0 иногда используются для знаковых нулей.

В округленных значениях, таких как температура

Неформально можно использовать обозначение "−0" для отрицательного значения, округленного до нуля. Это обозначение может быть полезно, когда отрицательный знак имеет значение, например, при составлении таблиц температур по Цельсию, где отрицательный знак означает температуру ниже нуля.

В статистической механике

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