10진수 64 부동소수점 형식

decimal64 floating-point format

컴퓨팅에서 decimal64는 컴퓨터 메모리에서 8바이트(64비트)를 차지하는 10진수 부동소수점 컴퓨터 번호부여 형식입니다.이는 재무 및 세금 계산과 같이 소수점 반올림을 정확하게 에뮬레이트해야 하는 애플리케이션을 위한 것입니다.

Decimal64는 16자리 유효 및 -383 ~ +384의 지수 범위를 지원합니다., ±0.00000000000000000000000000000000000000000000000000000000000010^~±9.999999999999×10^).−383384−398369반면 가장 일반적으로 사용되는 바이너리 포맷은 ±0.0000000000001×10^~±−3081.79793134862315×10^308 의 대략적인 범위를 가진다.유의와가 정규화되지 않았기 때문에 유효 자릿수가 16자리 미만인 대부분의 값은 1 × 102 = 0.1 × 103 = 0.01 × 104여러 가지 가능한 표현을 갖는다.제로에는 768개의 표현이 있습니다(서명된 제로가 모두 포함되어 있는 경우는 1536).

Decimal64 부동소수점 형식은 비교적 새로운 10진수 부동소수점 형식으로 2008년판[1] IEEE 754 ISO/IEC/IEE 60559:[2]2011에서 정식으로 도입되었습니다.


10진수 64값의 표현

서명하다 조합 지수 연속 중요성과 계속성
1비트 5비트 8비트 50비트
s 으음 xxxxxxxxxxxxxxxxxxx. cccccccccccccccccccccccccccccccccccccccc

IEEE 754 에서는, 10진수 64 의 값을 2 개의 대체 방법으로 표현할 수 있습니다.표준에서는 예를 들어 시스템 간에 10진수64 값이 전달되는 상황에서 사용되는 표현을 나타내는 방법을 규정하지 않습니다.

  • 2진수 표현법에서 16자리 유의와 16자리 정수는 2진수 정수 10진수(BID)에 근거하여 2진수 부호화된 정의 정수로 표현된다.
  • 16 자리수의 유의와 16 자리수의 정의 정수를, 3 자리수의 5 개의 그룹(특별하게 부호화된 최상위 자리수를 제외한다)을 가지는 촘촘히 패킹된 10 진수(DPD)에 근거해, 각각 데클렛(10 비트 시퀀스)으로 나타낸다.210 = 1024는 0 ~ 999의 모든 숫자를 포함하는 데 필요한 것보다 조금 더 많으므로 이 방법은 매우 효율적입니다.

둘 다 대안이 설명된다.(모든 가능한 소수 지수 값binary64 번호에 저장할 수 있는 decimal64고 binary64의 significand의 대부분의 비트 de의 숫자를 유지하고 저장된 대표적이다 대표적인 숫자의 정확히 똑같은 범위:significand의 16자리와 3× 28=768가능한 소수 지수 값을 제공한다.cImal digits in the significant and).

어느 경우든 significant의 최상위 4비트(실제로 10개의 가능한 값만 있음)와 지수 최상위 2비트(3개의 가능한 값)를 조합하여 5비트 필드의 가능한 32개의 값 중 30개를 사용합니다.나머지 조합은 인피니티와 NaN인코딩합니다.

[ Combination(Combination)]필드 지수 Msbits 중요 및 Msbits 다른.
00720 00 0xxxx
01회 01 0xxxx
10인치 10 0xxxx
1100m 00 100배
1101m 01 100배
1110m 10 100배
11110 ± 무한도
11111 NaN. 사인이 무시되었습니다.지수 연속 필드의 첫 번째 비트에 따라 NaN이 시그널링 중인지 여부가 결정됩니다.

Infinity 및 NaN의 경우 인코딩의 다른 모든 비트는 무시됩니다.따라서 배열을 1바이트 값으로 채워 Infinities 또는 NaN으로 초기화할 수 있습니다.

이진 정수 유의 필드

이 형식은 0 ~ 1016 - 1의 이진수를 사용합니다. = 999999999999 = 2386F26FC0FFF16 = 10001100110110011011001101100000000111111110000111111112.

64비트에 완전히 저장된 인코딩은 최대 10 × 250 - 1 = 11258999068426239 = 27FFFFFFFF까지16 이진수를 나타낼 수 있지만, 10 - 1보다16 큰 값은 불법입니다(또한 표준에서는 입력 시 0으로 처리해야 합니다).

위에서 설명한 바와 같이 부호화는 의 최상위4비트가 0 ~7(00002 ~01112) 또는 그 이상(1000 또는 10012)인지2 여부에 따라 달라집니다.

부호 비트 뒤의 2가 "00", "01" 또는 "10"인 경우, 지수 필드는 부호 비트 의 10비트로 구성되며, significant는 암묵적인 선두 0비트나머지 53비트가 됩니다.

s 00eeeee (0) tttttttttttt tttt tttt tttt tttt 01eeeee (0) tttttt tttt tttt tttt tttt tttt tttt tttt tttt tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt

여기에는 선행 유효 자릿수가 0인 정규 이하의 숫자가 포함됩니다.

부호 비트 뒤의 2비트가 "11"인 경우, 10비트 지수 필드는 오른쪽으로 2비트 이동하며(그 후 부호 비트와 "11" 비트 모두 뒤), 표시된 유의는 나머지 51비트에 있습니다.이 경우 True significant의 최대 비트(나머지 하위 비트 ttt)에 대해 암묵적인(즉, 저장되지 않은) 선두 3비트 시퀀스 "100"이 존재합니다.모든 가능한 값이 사용되는 것은 아닙니다).

s 1100eee (100) tttttttt tttt tttt tttt tttt tt 1101eeeee (100) tttttt tttt tttt tttt tttt tt ttt ttt tttt ttt tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt

부호 비트 뒤의 2비트 시퀀스 "11"은 의미자에 암묵적인 3비트 프리픽스 "100"이 있음을 나타냅니다.바이너리 포맷의 표준값과 유의값에 암묵적인 1비트 접두사 "1"을 갖는 것을 비교합니다.부호 비트 뒤의 2비트 시퀀스 "00", "01" 또는 "10"은 지수 필드의 일부입니다.

significant 및 필드의 선두 비트는 최상위 10진수를 인코딩하지 않습니다.그것은 단순히 큰 순수 2진수의 일부일 뿐입니다.를 들어, 80000000000000 유효치는 바이너리 0111000101010010010001101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000253최대 유효비트는 99999999999로 바이너리 부호화는 (100)0110011011001101100001100001111110000111111000011111111111입니다2(상기와 같이 3개의 최상위 비트(100)는 저장되지 않지만 암묵적입니다.다음 비트는 유효한 부호화에서는 항상0 입니다).

위의 경우 표시되는 값은 다음과 같습니다.

(-1)sign × 10exponent−398 × 유의

부호 비트 뒤의 4비트가 "1111"인 경우 위에서 설명한 바와 같이 값은 무한대 또는 NaN입니다.

s 11110 xx...x ±139s 11111 0x...x 조용한 NaN s 11111 1x...x 시그널링 NaN

촘촘하게 채워진 10진수 유의 및 필드

이 버전에서는 significant 및 는 일련의 10진수로 저장됩니다.선두 자리수는 0 ~9(3 또는4 바이너리비트)이며, 나머지 자리수는 Density Packed 10진수(DPD) 부호화를 사용합니다.

지수의 선두 2비트와 의 선두 자리(3 또는 4비트)가 부호 비트에 이은 5비트로 결합됩니다.

그 후의 이 8비트는 지수 연속 필드이며, 지수의 중요도가 낮은 비트를 제공합니다.

마지막 50비트는 5개의 10비트 데클레트로 [3]구성된 유의 및 연속 필드입니다.각 디클레트는 DPD 부호화를 사용하여 10진수[3] 3자리를 부호화합니다.

부호 비트 뒤의 처음 두 비트가 "00", "01" 또는 "10"인 경우, 이러한 비트는 지수의 선두 비트이며, 그 뒤의 세 비트 "TT"는 선두 10진수(0 ~ 7)로 해석됩니다.

s 00 TTT (00) eeee (0TT) [ tttttt] [ ttttttt] [ tttttt ][ tttttt ][ tttttt ]s 01 TTT (01) eeeeee (0TTTT) [ tttttttttt]

부호 비트 뒤의 처음 2비트가 "11"인 경우, 두 번째 2비트는 지수의 선두 비트이고, 다음 비트 "T"는 선행 10진수(8 또는 9)를 형성하기 위해 암묵 비트 "100" 앞에 붙습니다.

s 1100 T (00) eeee (100T) [ttttttt][ttttttt][ttttttt][ttttttt][ttttttt][ttttttt] s 1101 T (01) eeeee (100T) [ttttttttttt]

부호 비트 뒤의 5비트 필드의 나머지 2개 조합(1110 및 111)은 각각 ±infinity 및 NaN을 나타내기 위해 사용됩니다.

declet의 DPD/3BCD 트랜스코딩은 다음 표에 나와 있습니다.b9...b0은 DPD의 비트이고 d2...d0은 BCD의 3자리 숫자입니다.

조밀하게 패킹된 10진 부호화[4] 규칙
DPD 부호화 값 십진수
코드 공간(1024개 상태) b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 d2 d1 d0 부호화된 값 묘사 발생(1000개 상태)
50.0%(표준 상태) a b c d e f 0 g h i 0도 0 default(definition) 0ghi (0–7) (0–7) (0–7) 작은 숫자 세 개 51.2%(주)
37.5%(384개 주) a b c d e f 1 0 0 i 0도 0 default(definition) 100i (0–7) (0–7) (8–9) 작은 숫자 두 개,
큰 것 하나
38.4%(384개 주)
a b c g h f 1 0 1 i 0도 100도 0ghi (0–7) (8–9) (0–7)
g h c d e f 1 1 0 i 100c 0 default(definition) 0ghi (8–9) (0–7) (0–7)
9.375%(96개 주) g h c 0 0 f 1 1 1 i 100c 100도 0ghi (8–9) (8–9) (0–7) 작은 자릿수 하나,
큼직한 두 개
9.6%(96개 주)
d e c 0 1 f 1 1 1 i 100c 0 default(definition) 100i (8–9) (0–7) (8–9)
a b c 1 0 f 1 1 1 i 0도 100도 100i (0–7) (8–9) (8–9)
3.125%(32개 상태, 8개 사용) x x c 1 1 f 1 1 1 i 100c 100도 100i (8–9) (8–9) (8–9) 3자리 큰 숫자, 비트 b9 및 b8은 상관없습니다. 0.8%(8개 상태)

모두 8 또는9 의 자리수의 8 자리수의 10 진수치에는, 각각 4 개의 부호화가 있습니다.위의 표에서 x로 표시된 비트는 입력 시 무시되지만 계산된 결과에서는 항상 0입니다(8 × 3 = 24 비표준 인코딩은 10 = 100010 2 = 1024 사이의 간격3 채웁니다).

위의 경우 true significant와 디코딩된 10진수 시퀀스로 표시되는 값은 다음과 같습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ IEEE Computer Society (2008-08-29). IEEE Standard for Floating-Point Arithmetic. IEEE. doi:10.1109/IEEESTD.2008.4610935. ISBN 978-0-7381-5753-5. IEEE Std 754-2008. Retrieved 2016-02-08.
  2. ^ "ISO/IEC/IEEE 60559:2011". 2011. Retrieved 2016-02-08. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  3. ^ a b Muller, Jean-Michel; Brisebarre, Nicolas; de Dinechin, Florent; Jeannerod, Claude-Pierre; Lefèvre, Vincent; Melquiond, Guillaume; Revol, Nathalie; Stehlé, Damien; Torres, Serge (2010). Handbook of Floating-Point Arithmetic (1 ed.). Birkhäuser. doi:10.1007/978-0-8176-4705-6. ISBN 978-0-8176-4704-9. LCCN 2009939668.
  4. ^ Cowlishaw, Michael Frederic (2007-02-13) [2000-10-03]. "A Summary of Densely Packed Decimal encoding". IBM. Archived from the original on 2015-09-24. Retrieved 2016-02-07.