두 번 정밀 부동 소수점 형식
정밀도 바이너리 부동 소수점은 일반적으로 사용되는 형식을 Pc,으로 인해 그것의 넓은 범위를 통해 하나의 정밀 부동 소수점에도 불구하고,그 성과 및 대역폭을 비용. 그것은 일반적으로 단순히 두 배로 알려져 있습니다. IEEE754 표준 지정 binary64 있으로.
- 로 bit:1bit
- 지수:11 조금
- 기호 정밀도:53bits(52 명시적으로 저장)
호 비트를 결정한 표시의 번호(있는 경우를 포함 이수는 서명).
지수 필드는 편향된 형태로 0 에서 2047 까지의 11 비트 부호없는 정수입니다:1023 의 지수 값은 실제 0 을 나타냅니다. 지수의 범위는 -1022 에서+1023 까지이며 -1023(모두 0)및+1024(모두 1)의 지수가 특수 숫자로 예약되어 있기 때문입니다.
53 비트 유효 숫자 정밀도는 15 에서 17 의 유효 소수점 정밀도(2-53≈1.11×10-16)를 제공합니다. 면 십진수 문자열과 함께서 대부분의 15 중요한 자리 숫자로 변환되 IEEE754 배 정밀 표현,그리고 다음으로 다시 변환하여 십진수 문자열과 같은 숫자의 번호,최종 결과와 일치해야 원래의 문자열입니다. 는 경우 IEEE754 배 정밀번호로 변환하여 십진수 문자열과 함께서는 적어도 17 자리한 다음 다시 변환하여 두 번 정밀 표현,최종 결과 일치해야 합니다 원래의 번호입니다.
형식은 값 1 의 암시 적 정수 비트를 갖는 유효 숫자로 작성됩니다(특수 데이터는 제외하고 아래 지수 인코딩 참조). 메모리 포맷에 나타나는 분수(F)유효 숫자의 52 비트로,따라서 총 정밀도는 53 비트(약 16 진수,53log10(2)≈15.955)입니다. 비트는 다음과 같이 배치됩니다.
실제 가치로 간주하는 특정 64-bit 하는 정밀도 기준으로 주어진 바이어스 지수는 전자{\displaystyle e}
52-비율은(−1)기호(1. 비 51 비 50. . . b0)2×2e-1023{\displaystyle(-1)^{\text{sign}}(1.b_{51}b_{50}…b_{0})_{2}\times2^{e-1023}}
또는
(−1)기호(1+∑i=1 52b52−i2−i)×2e−1023{\displaystyle(-1)^{\text{명}}\left(1+\sum_{i=1}^{52}b_{52-i}2^{-i}\right)\배 2^{e-1023}}
사이 252=4,503,599,627,370,496 및 253=9,007,199,254,740,992 에 표현할 수 있는 숫자는 정확하게 정수입니다. 다음 범위의 경우 253 에서 254 까지 모든 것이 2 로 곱해 지므로 표현 가능한 숫자는 짝수 등입니다. 반대로,251 에서 252 까지의 이전 범위의 경우 간격은 0.5 등입니다.
2n 에서 2n+1 범위의 숫자의 분수로서의 간격은 2n-52 입니다.최대는 상대적인 라운딩할 때 오류가 반올림하여 숫자를 가장 가까운로 표현할 수 있는 하나의(기계 엡실론)에 따라서 2-53.
지수의 11 비트 너비는 10-308 과 10308 사이의 숫자를 전체 15-17 진수 정밀도로 표현할 수 있습니다. 정밀도를 손상시킴으로써 비정규 표현은 약 5×10-34 까지 더 작은 값을 허용합니다.
지수 encodingEdit
이중 정밀도 바이너리 부동 소수점수은 인코딩된 오프셋을 사용하면 이진수 표현으로,제로 오프셋 인 1023;으로도 알려진 지수 편견에 IEEE754 표준입니다. 이러한 표현이 될 것이다:
e=000000000012 00116 =1: |
2 1 − 1023 = 2 − 1022 {\displaystyle 2^{1-1023}=2^{-1022}} | (smallest exponent for normal numbers) | |
e =011111111112 3ff16 =1023: |
2 1023 − 1023 = 2 0 {\displaystyle 2^{1023-1023}=2^{0}} | (zero offset) | |
e =100000001012 40516 =1029: |
2 1029 − 1023 = 2 6 {\displaystyle 2^{1029-1023}=2^{6}} | ||
e =111111111102 7fe16 =2046: |
2 2046 − 1023 = 2 1023 {\displaystyle 2^{2046-1023}=2^{1023}} | (highest exponent) |
The exponents 00016
and 7ff16
have a special meaning:
-
000000000002
00016
is used to represent a signed zero (if F = 0) and subnormals (if F ≠ 0); 그리고 -
111111111112
7ff16
을 나타내는 데 사용됩∞(는 경우 F=0),Nan(는 경우 F≠0),
어디 F 은 소수의 일부 기호. 모든 비트 패턴은 유효한 인코딩입니다.
위의 예외를 제외하고 전체 배정밀도 수는 다음과 같이 설명됩니다.
(−1)기호×2e−1023×1. 분수{\displaystyle(-1)^{\text{sign}}\times2^{e-1023}\times1.{\text{fraction}}}
subnormals(e=0)의 경우 배정밀도 수는 다음과 같이 설명됩니다.
(-1)부호×2 1−1023×0. 분수=(−1)부호×2-1022×0. 분수{\displaystyle(-1)^{\text{sign}}\times2^{1-1023}\times0.{\텍스트{분수}}=(-1)^{\텍스트{서명}}\번 2^{-1022}\번 0.{\text{fraction}}}
EndiannessEdit
배정밀도 예제디트
0 01111111111 00000000000000000000000000000000000000000000000000002
≙3FF0 0000 0000 000016 ≙ +20 × 1 = 1
0 01111111111 00000000000000000000000000000000000000000000000000012
≙3FF0 0000 0000 000116 ≙ +20 × (1 + 2-52) ≈ 1.0000000000000002, the smallest number > 1
0 01111111111 00000000000000000000000000000000000000000000000000102
≙ 3FF0 0000 0000 000216 ≙ +20 × (1 + 2−51) ≈ 1.0000000000000004
0 10000000000 00000000000000000000000000000000000000000000000000002
≙ 4000 0000 0000 000016 ≙ +21 × 1 = 2
1 10000000000 00000000000000000000000000000000000000000000000000002
≙ C000 0000 0000 000016 ≙ −21 × 1 = −2
0 10000000000 10000000000000000000000000000000000000000000000000002
≙ 4008 0000 0000 000016 ≙ +21 × 1.12 = 112 = 3
0 10000000001 00000000000000000000000000000000000000000000000000002
≙ 4010 0000 0000 000016 ≙ +22 × 1 = 1002 = 4
0 10000000001 01000000000000000000000000000000000000000000000000002
≙ 4014 0000 0000 000016 ≙ +22 × 1.012 = 1012 = 5
0 10000000001 10000000000000000000000000000000000000000000000000002
≙ 4018 0000 0000 000016 ≙ +22 × 1.12 = 1102 = 6
0 10000000011 01110000000000000000000000000000000000000000000000002
≙ 4037 0000 0000 000016 ≙ +24 × 1.01112 = 101112 = 23
0 01111111000 10000000000000000000000000000000000000000000000000002
≙ 3F88 0000 0000 000016 ≙ +2−7 × 1.12 = 0.000000112 = 0.01171875 (3/256)
0 00000000000 00000000000000000000000000000000000000000000000000012
≙ 0000 0000 0000 000116 ≙ +2−1022 × 2−52 = 2−1074
≈ 4.9406564584124654 × 10−324 (Min. subnormal positive double)
0 00000000000 11111111111111111111111111111111111111111111111111112
≙ 000F FFFF FFFF FFFF16 ≙ +2−1022 × (1 − 2−52)
≈ 2.2250738585072009 × 10−308 (Max. subnormal double)
0 00000000001 00000000000000000000000000000000000000000000000000002
≙ 0010 0000 0000 000016 ≙ +2−1022 × 1
≈ 2.2250738585072014 × 10−308 (Min. normal positive double)
0 11111111110 11111111111111111111111111111111111111111111111111112
≙ 7FEF FFFF FFFF FFFF16 ≙ +21023 × (1 + (1 − 2−52))
≈ 1.7976931348623157 × 10308 (Max. Double)
0 00000000000 00000000000000000000000000000000000000000000000000002
≙ 0000 0000 0000 000016 ≙ +0
1 00000000000 00000000000000000000000000000000000000000000000000002
≙ 8000 0000 0000 000016 ≙ −0
0 11111111111 00000000000000000000000000000000000000000000000000002
≙ 7FF0 0000 0000 000016 ≙ +∞ (positive infinity)
1 11111111111 00000000000000000000000000000000000000000000000000002
≙ FFF0 0000 0000 000016 ≙ −∞ (negative infinity)
0 11111111111 00000000000000000000000000000000000000000000000000012
≙ 7FF0 0000 0000 000116 ≙ NaN (sNaN on most processors, such as x86 and ARM)
0 11111111111 10000000000000000000000000000000000000000000000000012
≙ 7FF8 0000 0000 000116 ≙ NaN (qNaN on most processors, such as x86 and ARM)
0 11111111111 11111111111111111111111111111111111111111111111111112
≙7FFF FFFF FFFF FFFF16≙NaN(NaN 의 대체 인코딩)
0 01111111101 01010101010101010101010101010101010101010101010101012
=3FD5 5555 5555 555516 ≙ +2-2 × (1 + 2-2 + 2-4 + … +2-52)≈1/3
0 10000000000 10010010000111111011010101000100010000101101000110002
=4009 21FB5444 2D1816≈pi
인코딩의 qNaN 및 sNaN 지 않은 완전에서 지정된 IEEE754 에 따라 달라집니다. X86 제품군 및 ARM 제품군 프로세서와 같은 대부분의 프로세서는 significand 필드의 가장 중요한 비트를 사용하여 조용한 NaN 을 나타냅니다. PA-RISC 프로세서는 시그널링 NaN 을 나타 내기 위해 비트를 사용합니다.
기본적으로 1/3 은 significand 의 홀수 비트 때문에 단일 정밀도와 같이 up 대신 아래로 반올림됩니다.
자세히
Given the hexadecimal representation 3FD5 5555 5555 555516, Sign = 0 Exponent = 3FD16 = 1021 Exponent Bias = 1023 (constant value; see above) Fraction = 5 5555 5555 555516 Value = 2(Exponent − Exponent Bias) × 1.Fraction – Note that Fraction must not be converted to decimal here = 2−2 × (15 5555 5555 555516 × 2−52) = 2−54 × 15 5555 5555 555516 = 0.333333333333333314829616256247390992939472198486328125 ≈ 1/3
실행 속도를 더 정밀 arithmeticEdit
배정밀도를 사용하여 부동 소수점 변수 및 수학적 기능(예를들면,sin,cos,atan2,log,exp 및 sqrt)은보다 느리게 작동하는 그들의 하나의 정밀도니다. 이것이 특정 문제인 컴퓨팅의 한 영역은 Gpu 에서 실행되는 병렬 코드입니다. 예를 들어,사용하는 경우 엔비디아의 쿠 플랫폼,계산 배정도 취에 따라,하드웨어,약 2~32 번으로 장을 완료하는 사람에 비해 사용하여 수행 하나의 정밀도입니다.
정밀한 제한 사항에 정수 valuesEdit
- 정 -253 253(-9007199254740992 을 9007199254740992)확하게 표현할 수
- 사이의 정수 253 및 254=18014398509481984 라운드를 여러 개의 2(짝수)
- 사이의 정수 254 255=36028797018963968 라운드를 여러 개의 4