Interested Article - ?0 (программирование)

−0 ( отрицательный ноль ) в программировании — число, возникающее при вычислениях с плавающей запятой (а также в некоторых вариантах представления целых со знаком).

Представления

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

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

Свойства

В языках программирования , таких как C , C# , C++ и Java , хотя и возможно получить отрицательный ноль в качестве результата вычисления выражения, при сравнении отрицательный ноль равен положительному, поэтому простое сравнение не может быть использовано для определения того, является ли число отрицательным нулём . Для проверки на отрицательный ноль можно использовать функцию CopySign() , определённую в IEEE 754 , которая копирует знак числа (в данном случае нуля) в другое число (для проверки знака нужно взять ненулевое).

Для определения знака нуля можно также использовать деление :

  • (для положительного x);
  • (для положительного x).

Результат других операций с отрицательным нулём:

  • (для положительного x);
  • (для отрицательного x);
  • (для отрицательного x);
  • ;
  • ;
  • ;
  • ;
  • ;
  • ;
  • ;
  • ;
  • (для положительного x);
  • ;
  • ;
  • , где NaN ( англ. Not-a-Number ) — машинное представление значения с неопределённым результатом;
  • .

В математике

Определения операций для нуля со знаком отражают свойства операций с бесконечно малыми величинами в математическом анализе , хотя не всегда точно соответствуют им. Так, например, свойства , , определённые в стандарте IEEE 754, не имеют математического обоснования.

См. также

Примечания

  1. Cowlishaw, Mike (англ.) . speleotrove.com (IBM Corporation) (7 апреля 2009). Дата обращения: 7 декабря 2010. 28 августа 2017 года.

Ссылки

  • (англ.) . MSDN C# Language Specification . Дата обращения: 15 октября 2005. Архивировано из 26 сентября 2009 года.
  • (англ.) . MSDN C# Language Specification . Дата обращения: 15 октября 2005. Архивировано из 3 декабря 2009 года.
  • (англ.) . General Decimal Arithmetic: Encoding Strawman 4d, version 0.96 . Дата обращения: 16 октября 2005. Архивировано из 16 октября 2006 года. — десятичная спецификация чисел с плавающей точкой включающая отрицательный нуль
  • Charles Kittel, Herbert Kroemer, Thermal Physics, W. H. Freeman & Company, 1980

Для более углублённого изучения

  • Michael Ingrassia. (англ.) . Sun Developer Network . Дата обращения: 15 октября 2005. Архивировано из 5 сентября 2006 года. — изменения в функции SIGN в для работы с отрицательным нулём
  • (англ.) . MSDN JScript . Дата обращения: 16 октября 2005. Архивировано из 6 декабря 2005 года. — арифметика с плавающей точкой в JScript содержит отрицательный нуль по определению
  • (англ.) . Javaworld . Дата обращения: 16 октября 2005. Архивировано из 16 октября 2006 года. — представление отрицательного нуля в Java virtual machine
  • — как обращаться с отрицательным нулём при сравнении чисел с плавающей точкой
  • . (англ.) . UNIVAC Memories . Дата обращения: 17 октября 2005. Архивировано из 25 сентября 2006 года. — Числа в одинарном дополнительном коде на семействе компьютеров UNIVAC 1100.
Источник —

Same as ?0 (программирование)