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

редактировать
Различение положительного и отрицательного нуля

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

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

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

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

Содержание
  • 1 Представления
  • 2 Свойства и обработка
    • 2.1 Обозначения
    • 2.2 Арифметика
    • 2.3 Сравнения
  • 3 Использование в научных целях
  • 4 См. Также
  • 5 Ссылки
  • 6 Дополнительная литература
Представления

Широко используемое кодирование с дополнением до двух не допускает отрицательного нуля. В представлении 1 + 7-битное знак и величина для целых чисел отрицательный ноль представлен битовой строкой 10000000. В 8-битном представлении с дополнением до единицы отрицательный ноль равен представлен битовой строкой 11111111. Во всех трех кодировках положительный ноль представлен как 00000000. Однако это необычные форматы, наиболее распространенными форматами, включая отрицательный ноль, являются форматы с плавающей запятой IEEE 754, описанные ниже.

Отрицательный ноль в представлении IEEE 754 в binary32

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

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

Свойства и обработка

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

Обозначение

В системах, которые содержат как знаковые, так и беззнаковые нули, запись 0 + {\ displaystyle 0 ^ {+}}0 ^ {+} и 0 - {\ displaystyle 0 ^ {-}}0 ^ {-} иногда используется для нулей со знаком.

Арифметика

Сложение и умножение коммутативны, но есть некоторые особые правила, которые необходимо соблюдать, а это означает, что обычные математические правила для алгебраического упрощения могут не применяться. Знак = {\ displaystyle =}= ниже показывает подписанный результат операций.

При умножении или делении всегда соблюдается обычное правило для знаков:

  • - 0 | х | = - 0 {\ displaystyle {\ frac {-0} {\ left | x \ right |}} = - 0 \, \!}{\ frac {-0} {\ left | x \ right |}} = - 0 \, \! (для x {\ displaystyle x}x отличается от 0)
  • (- 0) ⋅ (- 0) = + 0 {\ displaystyle (-0) \ cdot (-0) = + 0 \, \!}(-0) \ cdot (-0) = + 0 \, \!

Есть специальные правила добавления или вычитания нуля со знаком:

  • x + (± 0) = x {\ displaystyle x + (\ pm 0) = x \, \!}x + (\ pm 0) = x \, \! (для x {\ displaystyle x}x отличается от 0)
  • (- 0) + (- 0) = (- 0) - (+ 0) = - 0 {\ displaystyle (-0) + (- 0) = (-0) - (+ 0) = - 0 \, \!}(-0) + (- 0) = (- 0) - (+ 0) = - 0 \, \!
  • (+ 0) + (+ 0) = (+ 0) - (- 0) = + 0 {\ displaystyle (+0) + (+0) = (+ 0) - (- 0) = + 0 \, \!}(+0) + (+ 0) = (+ 0) - (-0) = + 0 \, \!
  • х - х = х + (- х) = + 0 {\ Displaystyle хх = х + (- х) = + 0 \, \!}xx ​​= x + (- x) = + 0 \, \! (для любого конечного x {\ displaystyle x}x , −0 при округлении в отрицательную сторону)

Из-за отрицательного нуля (а также когда режим округления - вверх или вниз), выражения - (x - y) и (−x) - (−y) для переменных x и y с плавающей запятой не могут быть заменены на y - x. Однако (-0) + x можно заменить на x с округлением до ближайшего (кроме случаев, когда x может быть , сигнализирующим NaN ).

Некоторые другие специальные правила:

  • - 0 = - 0 {\ displaystyle {\ sqrt {-0}} = - 0 \, \!}{\ sqrt {-0}} = - 0 \, \!
  • - 0 - ∞ = + 0 {\ displaystyle {\ frac {-0} {- \ infty}} = + 0 \, \!}{\ frac {-0} {- \ infty}} = + 0 \, \! (следует правилу знака для деления)
  • | х | - 0 = - ∞ {\ displaystyle {\ frac {\ left | x \ right |} {- 0}} = - \ infty \, \!}{\ frac {\ left | x \ right |} {- 0}} = - \ infty \, \! (для ненулевого x { \ displaystyle x}x , следует правилу знаков для деления)
  • ± 0 × ± ∞ = NaN {\ displaystyle {\ pm 0} \ times {\ pm \ infty} = {\ t_dv {NaN }} \, \!}{\ pm 0} \ times {\ pm \ infty} = {\ t_dv {NaN}} \, \! (Не число или прерывание для неопределенной формы )
  • ± 0 ± 0 = NaN {\ displaystyle {\ frac {\ pm 0} {\ pm 0}} = {\ t_dv {NaN}} \, \!}{ \ frac {\ pm 0} {\ pm 0}} = {\ t_dv {NaN}} \, \!

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

Сравнения

Согласно стандарту IEEE 754 отрицательный ноль и положительный ноль должны сравниваться как равные с обычными (числовыми) операторами сравнения, такими как ==операторы C и Java. В этих языках могут потребоваться специальные приемы программирования, чтобы различать два значения:

  • Тип перфорации числа в целочисленный тип, чтобы посмотреть на знаковый бит в битовом шаблоне;
  • с использованием функции ISO C copysign ()(операция copySign IEEE 754) для копирования знака нуля в некоторое ненулевое число;
  • с использованием знака ISO C signbit ()макрос (операция isSignMinus IEEE 754), который возвращает, установлен ли знаковый бит числа;
  • принимает обратную величину от нуля для получения либо 1 / (+ 0) = + ∞, либо 1 / ( −0) = −∞ (если исключение деления на ноль не перехвачено).

Примечание: Преобразование в целочисленный тип не всегда работает, особенно в системах с дополнением до двух.

Однако некоторые языки программирования могут предоставлять альтернативные операторы сравнения, которые действительно различают два нуля. Это случай, например, метода equalsв классе оболочки Java Double.

Scientific использует

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

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

См. Также
Ссылки
Дополнительная литература
Последняя правка сделана 2021-06-08 08:34:45
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте