부동 소수점 연산에 대한 IEEE 표준(IEEE 754)은 1985년에 제정된 부동 소수점 연산에 대한 기술 표준입니다. 전기전자공학회(IEEE) . 이 표준은 다양한 부동 소수점 구현에서 발견되어 안정적으로 사용하기 어렵게 만들고 이식성을 감소시키는 많은 문제를 해결했습니다. IEEE 표준 754 부동 소수점은 오늘날 Intel 기반 PC, Mac 및 대부분의 Unix 플랫폼을 포함한 컴퓨터에서 실수를 나타내는 가장 일반적인 표현입니다.
부동 소수점 수를 표현하는 방법에는 여러 가지가 있지만 대부분의 경우 IEEE 754가 가장 효율적입니다. IEEE 754에는 3가지 기본 구성요소가 있습니다.
- 가수의 표시 –
이름만큼이나 간단합니다. 0은 양수를 나타내고 1은 음수를 나타냅니다. - 편향 지수 -
지수 필드는 양수 지수와 음수 지수를 모두 나타내야 합니다. 저장된 지수를 얻기 위해 실제 지수에 바이어스가 추가됩니다. - 정규화된 가수 -
가수는 유효 숫자로 구성된 과학적 표기법 또는 부동 소수점 숫자의 일부입니다. 여기에는 O와 1이라는 2자리 숫자만 있습니다. 따라서 정규화된 가수는 소수점 왼쪽에 1이 하나만 있는 것입니다.
IEEE 754 숫자는 위의 세 가지 구성 요소에 따라 단정밀도와 배정밀도의 두 가지로 나뉩니다.
| 유형 | 징후 | 편향된 지수 | 정규화된 가수 | 편견 |
|---|---|---|---|---|
| 단일 정밀도 | 1(31번째 비트) | 8(30-23) | 23(22-0) | 127 |
| 배정밀도 | 1(63번째 비트) 우르피 자베드가 누구야? | 11(62-52) | 52(51-0) | 1023 |
예 -
85.125 85 = 1010101 0.125 = 001 85.125 = 1010101.001 =1.010101001 x 2^6 sign = 0 1. Single precision: biased exponent 127+6=133 133 = 10000101 Normalised mantisa = 010101001 we will add 0's to complete the 23 bits The IEEE 754 Single precision is: = 0 10000101 01010100100000000000000 This can be written in hexadecimal form 42AA4000 2. Double precision: biased exponent 1023+6=1029 1029 = 10000000101 Normalised mantisa = 010101001 we will add 0's to complete the 52 bits The IEEE 754 Double precision is: = 0 10000000101 0101010010000000000000000000000000000000000000000000 This can be written in hexadecimal form 4055480000000000>
특수 값: IEEE는 모호할 수 있는 일부 값을 예약했습니다.
- 영 -
0은 지수와 가수 0으로 표시되는 특수 값입니다. -0과 +0은 둘 다 동일하지만 서로 다른 값입니다.
- 비정규화 –
지수는 모두 0이지만 가수는 그렇지 않은 경우 값은 비정규화된 숫자입니다. 즉, 이 숫자에는 이진수 앞에 선행하는 숫자가 없다고 가정됩니다. - 무한 –
+infinity 및 -infinity 값은 모두 1의 지수와 모두 0의 가수로 표시됩니다. 부호 비트는 음의 무한대와 양의 무한대를 구별합니다. 무한한 값을 갖는 연산은 IEEE에 잘 정의되어 있습니다. - 숫자가 아님(NAN) –
NAN 값은 오류인 값을 나타내는 데 사용됩니다. 이는 지수 필드가 0 부호 비트 또는 1이 아닌 가수 뒤에 0이 오는 모든 1일 때 표시됩니다. 이는 아직 값을 보유하지 않은 변수를 나타내는 데 사용할 수 있는 특수 값입니다.
| 멱지수 | 가수 | 값 |
|---|---|---|
| 0 | 0 | 정확한 0 |
| 255 | 0 | 무한대 |
| 0 | 0이 아니다 | 비정규화된 |
| 255 | 0이 아니다 | 숫자가 아님(NAN) |
배정밀도(255를 2049로 대체), 부동 소수점 숫자 범위와 유사합니다.
| 비정규화됨 | 정규화됨 | 대략적인 십진수 | |
|---|---|---|---|
| 단일 정밀도 | ±2-149(1 – 2-23)×2-126 | ±2-126(2 – 2-23)×2127 | ± 약 10-44.85약 10까지38.53 |
| 배정밀도 | ±2-1074(1 – 2-52)×2-1022 | ±2-1022(2 – 2-52)×21023 | ± 약 10-323.3약 10까지308.3 |
양의 부동 소수점 숫자의 범위는 정규화된 숫자와 분수 정밀도의 일부만 사용하는 비정규화된 숫자로 나눌 수 있습니다. 모든 부동 소수점 숫자에는 해당하는 부정 값이 있으므로 위의 범위는 0을 기준으로 대칭입니다.
단정밀도 부동 소수점 숫자가 지금까지 제시된 방식으로 표현할 수 없는 5가지 고유한 숫자 범위가 있습니다.
차단된 번호
- – (2 – 2보다 작은 음수-23) × 2127(음수 오버플로)
- – 2보다 큰 음수-149(음의 언더플로우)
- 영
- 2보다 작은 양수-149(포지티브 언더플로우)
- (2 – 2보다 큰 양수-23) × 2127(양성 오버플로)
오버플로는 일반적으로 값이 표시할 수 없을 정도로 커졌음을 의미합니다. 언더플로는 0에 가깝게 근사되는 것이 보장되는 정밀도 손실을 나타내기 때문에 덜 심각한 문제입니다.
유한 IEEE 부동 소수점 숫자의 전체 유효 범위 표는 다음과 같습니다.
| 바이너리 | 소수 | |
|---|---|---|
| 하나의 | ± (2 – 2-23) × 2127 | 약 ± 1038.53 |
| 더블 | ± (2 – 2-52) × 21023 | 약 ± 10308.25 |
특수 작전 –
| 작업 | 결과 |
|---|---|
| n ¼ ±무한대 | 0 |
| ±무한대 × ±무한대 | ±무한대 |
| ±0이 아닌 ¼ ±0 | ±무한대 |
| ±유한 × ±무한 | ±무한대 |
| 무한대 + 무한대 무한대 – -무한대 | +무한대 |
| -무한대 – 무한대 -무한대 + – 무한대 | – 인피니티 |
| ±0 ¼ ±0 | NaN |
| ±무한대 ¼ ±무한대 | NaN |
| ±무한대 × 0 | NaN |
| NaN == NaN | 거짓 |