Jump to content

Signed zero

This is a fully translated article. Click here for more information.
From DawoumWiki, the free Mathematics self-learning

부호화된 영(signed zero)은 결합된 부호(sign)를 갖는 영(zero)입니다. 보통의 산술에서, 숫자 0은 −0, +0 및 0은 동일하도록 부호를 가지지 않습니다. 어쨌든, 컴퓨팅(computing)에서, 일부 숫자 표현은, 숫자적 비교 연산으로는 같지만 특정 연산에서는 가능한 다른 동작을 갖는 것으로 고려되는, 종종 −0 (음의 영(negative zero)) 및 +0 (양의 영(positive zero))에 의해 표시되는, 두 개의 영의 존재를 허용합니다. 이것은 정수에 대해 부호와 크기(sign and magnitude)일의 보수(ones' complement) 부호화된 숫자 표현(signed number representation), 및 대부분의 부동-점 숫자(floating-point number) 표현에서 발생합니다. 숫자 0은 +0으로 보통 인코딩되지만, +0 또는 −0에 의해 표현될 수 있습니다.

(현재 대부분의 컴퓨터와 부동 소수점 숫자를 지원하는 프로그래밍 언어에서 보통 사용되는) 부동-점 연산에 대한 IEEE 754 표준은 +0과 −0 둘 다를 요구합니다. 부호화된 영을 가진 실수 산술은, 1/−0 = − 및 1/+0 = +∞와 같은, 확장된 실수 직선(extended real number line)의 변형으로 여길 수 있습니다; 나눗셈(division)±0/±0 및 ±∞/±∞에 대해 오직 정의되지 않습니다.

음수로 부호화된 영은 한쪽 극한(one-sided limit)으로써 아래쪽으로부터 0에 접근하는 것의 수학적 해석학(mathematical analysis) 개념을 반향하며, 이것은 x → 0, x → 0−, 또는 x → ↑0에 의해 표시될 수 있습니다. 표기법 "−0"은, 영으로 반올림(rounded)된 작은 음의 숫자를 나타내기 위해 비공식적으로 사용될 수 있습니다. 음의 영의 개념은 역시 통계적 역학(statistical mechanics)과 다른 분야에서 일부 이론적인 응용을 가집니다.

그것은 IEEE 754에서 부호화된 영을 포함은, 일부 중요한 문제에서,[1] 특히 복소수(complex) 기본 함수로 계산할 때,[2] 수치적 정확도를 훨씬 쉽게 얻을 수 있다고 주장됩니다. 다른 한편으로, 부호화된 영의 개념은, 음의 영은 영과 같은 것으로 대부분의 수학 분야에서 만들어진 일반적인 가정과 반대로 동작합니다. 음의 영을 허용하는 표현은, 만약 소프트웨어 개발자가 두 개의 영 표현이 숫치적 비교 아래에서 같은 것으로 동작하는 것을 고려하지 않으면, 그것들이 일부 연산에서는 다른 결과를 산출하며, 프로그램에서 오류의 원천이 될 수 있습니다.

Representations

널리 사용되는 이의 보수(two's complement) 인코딩은 음의 영을 허용하지 않습니다. 정수에 대한 1+7-비트 부호-와-크기(sign-and-magnitude) 표현에서, 음의 영은 비트 문자열 10000000에 의해 표시됩니다. 8-비트 일의 보수(one's complement) 표현에서, 음의 영은 비트 문자열 11111111에 의해 표시됩니다. 모든 세 인코딩에서, 양의 영은 00000000에 의해 표시됩니다. 어쨌든, 이들은 비-공통적 형식이며, 음의 영을 포함한 가장 공통적인 형식은 아래에 설명된 IEEE 754 부동-점 형식입니다.

Negative zero by IEEE 754 representation in binary32

IEEE 754 이진 부동-점 숫자에서, 영 값은 편향된 지수와 유효숫자(significand) 둘 다가 영에 의해 표시됩니다. 음의 영은 일로 설정된 부호 비트를 가집니다. 우리는, 특정 계산의 결과, 예를 들어 음수에 대한 산술 언더플로(arithmetic underflow)로, 또는 −1.0×0.0, 또는 단순히 −0.0로 음의 영을 얻을 수 있습니다.

IEEE 754 십진 부동-점 인코딩에서, 음의 영은 인코딩에 대해 범위에서 임의의 유효한 지수인 지수, 영인 참 유효숫자, 및 일인 부호 비트에 의해 표시됩니다.

Properties and handling

IEEE 754 부동-점 표준은 다양한 연산 아래에서 양의 영과 음의 영의 동작을 지정합니다. 결과는 현재 IEEE 반올림 모드(IEEE rounding mode) 설정에 따라 달라질 수 있습니다.

Notation

부호화된 및 비-부호화된 영 둘 다를 포함하는 시스템에서, 표기법 이 부호화된 영에 대해 때때로 사용됩니다.

Arithmetic

덧셈과 곱셈은 교환적이지만, 따라야 할 일부 특별한 규칙이 있으며, 이것은 대수적 단순화에 대한 보통의 수학적 규칙이 적용되지 않을 수 있음을 의미합니다. 기호는 연산의 부호화된 결과를 아래에 보여줍니다.

기호에 대해 보통 규칙은 곱하거나 나눌 때 항상 따르게 됩니다:

  • (0과 다른 에 대해)

부호화된 영을 더하거나 빼는 특별한 규칙이 있습니다:

  • (0과 다른 에 대해)
  • (임의의 유한 , 음을 향해 반올림할 때 −0에 대해)

음의 영때문에 (그리고 역시 반올림 모드가 위쪽 또는 아래쪽 방향일 때), 부동-점 변수 xy에 대해, 표현 −(xy)(−x) − (−y)yx로 대체될 수 없습니다. 어쨌든 (−0) + x는 가장 가까운 것으로 반올림하여 x로 대체될 수 있습니다 (x신호 NaN(signaling NaN)이 될 수 있는 것을 제외합니다).

일부 다른 특별한 규칙:

  • [3]
  • (follows the sign rule for division)
  • (for non-zero , follows the sign rule for division)
  • (Not a Number or interrupt for indeterminate form)

영에 의한 비-영 숫자의 나눗셈은 영 플래그(flag)에 의한 나누는 것으로 설정되고, NaN을 생성하는 연산이 유효하지 않은 연산 플래그를 설정합니다. 예외 처리기(exception handler)는 만약 해당하는 플래그에 대해 활성화되면 호출됩니다.

Comparisons

IEEE 754 표준에 따르면, 음의 영과 양의 영은 C자바(Java)== 연산자와 같은, 보통의 (수치적) 비교 연산자와 같게 비교되어야 합니다. 그들 언어에서, 특별한 프로그래밍 트릭이 두 값을 구별하기 위해 필요될 수 있습니다:

  • 비트 패턴에서 부호 비트를 보기 위해, 숫자를 정수 유형으로 타입 퍼닝(Type punning);
  • 영의 부호를 어떤 비-영 숫자로 복사하기 위해 ISO C copysign() 함수 (IEEE 754 copySign 연산)를 사용하는 것;
  • 숫자의 부호 비트가 설정된지 여부를 반환하는 ISO C signbit() 매크로 (IEEE 754 isSignMinus 연산)을 사용하는 것;
  • 1/(+0) = +∞ 또는 1/(−0) = −∞를 획득하기 위해 영의 역을 취하는 것 (만약 영에 의한 나눗셈(division by zero) 예외가 잡게 되지 않으면).

주목: 정수 유형으로 캐스팅(Casting)하는 것은 특히 이의 보수 시스템에서 항상 작동하는 것은 아닙니다.

어쨌든, 일부 프로그래밍 언어는 두 개의 영을 구별하는 대안적인 비교 연산자를 제공할 수 있습니다. 이것은, 예를 들어, 자바의 Double 래퍼 클래스에 있는 equals 방법의 경우입니다.[4]

Scientific uses

비공식적으로, 우리는 영으로 반올림되었던 음의 값에 대해 표기법 "−0"을 사용할 수 있습니다. 이 표기법은 음의 부호가 중요할 때 유용할 수 있습니다; 예를 들어, 섭씨(Celsius) 온도를 테이블로 만들 때, 여기서 음의 기호는 영하를 의미합니다.

통계 역학에서, 우리는 때때로 음의 온도(negative temperature)인구 반전(population inversion)을 갖는 시스템을 설명하기 위해 사용하며, 이것은 양의 무한대보다 더 큰 온드를 가지는 것으로 여길 수 있는데, 왜냐하면 인구 분포 함수에서 에너지의 계수가 −1/온도이기 때문입니다. 이 문맥에서, −0의 온도는 임의의 다른 음의 온도보다 더 큰 (이론적인) 온도이며, 인구 반전의 (이론적) 최대 상상-가능한 범위에 해당하며, 반대 극단은 +0입니다.[5]

See also

References

  1. ^ William Kahan, "Branch Cuts for Complex Elementary Functions, or Much Ado About Nothing's Sign Bit", in The State of the Art in Numerical Analysis (eds. Iserles and Powell), Clarendon Press, Oxford, 1987.
  2. ^ William Kahan, Derivatives in the Complex z-plane, p. 10.
  3. ^ Cowlishaw, Mike (7 April 2009). "Decimal Arithmetic: Arithmetic operations – square-root". speleotrove.com (IBM Corporation). Retrieved 7 December 2010.
  4. ^ http://java.sun.com/javase/6/docs/api/java/lang/Double.html#equals(java.lang.Object)
  5. ^ Kittel, Charles and Herbert Kroemer (1980). Thermal Physics (2nd ed.). W. H. Freeman Company. p. 462. ISBN 0-7167-1088-9.

Further reading