−0 (программирование)

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

Содержание

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

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

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

Свойства

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

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

  • \;x / +0 = +\infty (для положительного x)
  • \;x / -0 = -\infty (для положительного x)

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

  • \;-0 / x = -0 (для положительного x)
  • \;-0 / x = +0 (для положительного x)
  • \;+0 / x = -0 (для положительного x)
  • \;-0 / +\infty = -0
  • \;-0 / -\infty = +0
  • \;+0 / -\infty = -0
  • \;-0 \cdot -0 = +0
  • \;-0 - +0 = -0
  • \;-0 - -0 = +0
  • \;+0 + -0 = +0
  • \;-0 + -0 = -0
  • \;x \cdot -0 = -0 (для положительного x)
  • \;x + -0 = x

Ссылки

— десятичная спецификация чисел с плавающей точкой включающая отрицательный нуль

  • Charles Kittel, Herbert Kroemer, Thermal Physics, W. H. Freeman & Company, 1980

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

  • Michael Ingrassia Fortran 95 SIGN Change Sun Developer Network. Проверено 15 октября 2005 г.

— изменения в функции SIGN в Fortran 95 для работы с отрицательным нулём

— арифметика с плавающей точкой в JScript содержит отрицательный нуль по определению

— предеставление отрицательного нуля в Java virtual machine

  • Comparing floating point numbers, Bruce Dawson — как обращаться с отрицательным нулём при сравнении чисел с плавающей точкой
  • John Walker Minus Zero UNIVAC Memories. Проверено 17 октября 2005 г.

— Числав в одинарном дополнительном коде на семействе компьютеров UNIVAC 1100.

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home