촘촘하게 포장된 소수점
Densely packed decimal촘촘히 채워진 소수점(DPD)은 이진 부호화 십진수를 효율적으로 인코딩하는 방법이다.
전통적인 십진수 인코딩 시스템은 각 숫자를 인코딩하기 위해 4비트를 사용하며, 포장된 BCD를 사용할 때에도 2진수 데이터 대역폭의 상당한 낭비(4비트가 16 상태를 저장할 수 있고 10개만 저장하는 데 사용되기 때문에)를 초래한다.촘촘히 채워진 십진법이란 하드웨어 게이트 지연이 두 세 개에 불과한 BCD에서 압축하거나 BCD로 확장할 수 있는 방식을 이용해 3자리수를 10비트로 압축하는 보다 효율적인 코드다.[1]
촘촘히 채워진 십진 인코딩은 Chen-Ho 인코딩을 정교하게 한 것이다. 이 인코딩은 동일한 압축과 속도 이점을 제공하지만 사용된 비트의 특정한 배열은 추가적인 이점을 제공한다.
- 한 자리 또는 두 자리(각각 최적 네 자리 또는 일곱 비트로 압축)는 세 자리 인코딩의 하위 집합으로 달성된다.임의의 소수 자릿수(3자리 배수만이 아니라)를 효율적으로 인코딩할 수 있다는 뜻이다.예를 들어, 38 = 12 × 3 + 2 소수 자릿수는 12 × 10 + 7 = 127 비트로 인코딩할 수 있다. 즉, 소수 자릿수 중 12 세트는 10개의 이진 비트를 사용하여 인코딩할 수 있고 나머지 두 개의 소수 자릿수는 7개의 이진 비트를 추가로 사용하여 인코딩할 수 있다.
- 위에서 언급한 서브셋 인코딩은 단순히 표준 3자리 인코딩의 가장 오른쪽 비트일 뿐이며, 인코딩된 값은 선행 0비트를 추가하여 간단히 넓힐 수 있다.
- 모든 7비트 BCD 번호(0 ~ 79)는 DPD에 의해 동일하게 인코딩된다.이것은 일반적인 작은 숫자의 변환을 사소한 것으로 만든다.(이는 BCD에 8비트가 필요하지만 위의 속성은 DPD 인코딩을 7비트로 맞추어야 하기 때문에 80에서 분해되어야 한다.)
- 각 숫자의 저차 비트는 수정되지 않은 채 복사된다.따라서 인코딩의 비경쟁 부분은 3개의 base-5자리 숫자에서 7개의 이진 비트로의 변환으로 간주할 수 있다.또한, (각 숫자가 0 또는 1인) 숫자형 논리 값은 인코딩이나 디코딩 없이 직접 조작할 수 있다.
역사
1969년, 테오도르 M.헤르츠, 그리고 1971년, 어빙 티제호(何慈慈)와 함께 티엔치 첸(天機機)은 하드웨어에서 두세 게이트 지연만으로 BCD로 압축 또는 확장을 허용하는 방식을 사용하여 소수점 3자리 숫자를 10개의 이진 비트로 채운 무손실 접두사 코드(Hertz 및 Chen-Ho 인코딩[2])를 고안했다.촘촘히 채워진 십진법은 마이크 F가 고안한 이것의 정교함이다. 2002년에 IEEE 754-2008[3] 및 ISO/IEC/IEEE 60559:2011[4] 부동 소수점 표준에 통합되었다.[1]
인코딩
Chen-Ho 인코딩과 마찬가지로 DPD 인코딩은 이진 형식의 가장 중요한 비트에 따라 각 소수 자릿수를 두 범위 중 하나로 분류한다: "작은" 자릿수는 0에서 7까지(이진 0000–0111)와 "큰" 자릿수는 8에서 9까지(이진 1000–1001)이다.일단 그것이 알려졌거나 한 자리가 작다고 표시되었더라도, 그 값을 지정하기 위해서는 여전히 3비트가 더 필요하다.큰 값이 표시된 경우 8 또는 9 값을 구별하려면 1비트만 있으면 된다.
인코딩할 때, 다음 표에 따라 인코딩할 세 자리 각각의 가장 중요한 비트는 나머지 비트에 대한 8개의 코드 패턴 중 하나를 결정한다.표는 디코딩 시 b9부터 b0까지의 열에서 코드화된 형태의 10비트를 d2부터 d0까지의 3자리 숫자로 복사하고, 나머지 비트는 일정한 0이나 1로 채우는 방법을 보여준다.
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 | 0abc | 0def | 0ghi | (0–7) (0–7) (0–7) | 작은 자리수 3개 | 51.2%(주 단위) | |
37.5%(384개 주) | a | b | c | d | e | f | 1 | 0 | 0 | i | 0abc | 0def | 100i | (0–7) (0–7) (8–9) | 작은 자리 두 개, 큰 것 하나 | 38.4%(384개 주) | |
a | b | c | g | h | f | 1 | 0 | 1 | i | 0abc | 100f | 0ghi | (0–7) (8–9) (0–7) | ||||
g | h | c | d | e | f | 1 | 1 | 0 | i | 100c | 0def | 0ghi | (8–9) (0–7) (0–7) | ||||
9.375%(96개 주) | g | h | c | 0 | 0 | f | 1 | 1 | 1 | i | 100c | 100f | 0ghi | (8–9) (8–9) (0–7) | 작은 자리 하나, 큰 두 개 | 9.6%(96개 주) | |
d | e | c | 0 | 1 | f | 1 | 1 | 1 | i | 100c | 0def | 100i | (8–9) (0–7) (8–9) | ||||
a | b | c | 1 | 0 | f | 1 | 1 | 1 | i | 0abc | 100f | 100i | (0–7) (8–9) (8–9) | ||||
3.125%(32개 주, 8개 주 사용) | x | x | c | 1 | 1 | f | 1 | 1 | 1 | i | 100c | 100f | 100i | (8–9) (8–9) (8–9) | 큰 숫자 세 개, 비트 b9와 b8은 상관없다. | 0.8%(8개 주) |
비트 b7, b4 및 b0 (c
,f
그리고i
)는 변경되지 않은 인코딩을 통해 전달되며, 다른 비트의 의미에는 영향을 주지 않는다.나머지 7비트는 3개의 기본 5자리 숫자에 대한 7비트 인코딩으로 간주할 수 있다.
비트 b8과 b9는 3자리 숫자가 큰 DPD 그룹(위 표의 마지막 행에 "x"로 표시됨)을 디코딩할 때는 필요 없고 무시되지만 인코딩할 때는 0으로 채워진다.
숫자가 모두 8 또는 9인 소수점 8개에는 각각 4개의 코딩이 있다.위의 표에 x로 표시된 비트는 입력 시 무시되지만 계산 결과에서는 항상 0이 된다. (8 x 3 = 24 비표준 인코딩은 103 = 1000과 2 = 102410 사이의 간격을 채운다.)
예
이 표에는 BCD, Chen-Ho 및 촘촘히 채워진 소수점(DPD)의 대표적인 소수점 및 그 인코딩이 나와 있다.
십진법 | BCD | 천호 | DPD |
---|---|---|---|
005 | 0000 0000 0101 | 000 000 0101 | 000 000 0101 |
009 | 0000 0000 1001 | 110 000 0001 | 000 000 1001 |
055 | 0000 0101 0101 | 000 010 1101 | 000 101 0101 |
079 | 0000 0111 1001 | 110 011 1001 | 000 111 1001 |
080 | 0000 1000 0000 | 101 000 0000 | 000 000 1010 |
099 | 0000 1001 1001 | 111 000 1001 | 000 101 1111 |
555 | 0101 0101 0101 | 010 110 1101 | 101 101 0101 |
999 | 1001 1001 1001 | 111 111 1001 | 001 111 1111 |
참고 항목
- 이진 코드 소수점(BCD)
- 이진 정수 소수점(BID)
- 10진수32 부동 소수점 형식
- 10진수64 부동 소수점 형식
- 십진법 부동 소수점 형식
- DEC RADIX 50 / MOD40
- IBM 스쿼제
참조
- ^ a b Cowlishaw, Michael Frederic (2002-08-07) [May 2002]. "Densely Packed Decimal Encoding". IEE Proceedings - Computers and Digital Techniques. London, UK: Institution of Electrical Engineers. 149 (3): 102–104. doi:10.1049/ip-cdt:20020407. ISSN 1350-2387. Retrieved 2016-02-07.
- ^ Cowlishaw, Michael Frederic (2014) [June 2000]. "A Summary of Chen-Ho Decimal Data encoding". IBM. Archived from the original on 2015-09-24. Retrieved 2016-02-07.
- ^ 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.
- ^ ISO/IEC/IEEE 60559:2011. 2011. Archived from the original on 2020-06-03. Retrieved 2016-02-08.
- ^ 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.
추가 읽기
- Cowlishaw, 마이클 프레드릭(2003-02-25)[2002-05-20, 2001-01-27].코번트리 영국."Decimal이진 coder/decoder에"(미국 특허)에서 복사되거나 쓰여진다면Armonk, 뉴욕, 미국:천공 카아드 회계 방식 공사(IBM). US6525679B1.2018-07-18[1]과 Cowlishaw, 마이클 프레드릭(2007-11-07)[2004-01-14, 2002-08-14, 2001-09-24, 2001-01-27]Retrieved.윈체스터, 햄프셔, 영국."Decimal이진 coder/decoder에"(유럽 특허)에서 복사되거나 쓰여진다면Armonk, 뉴욕, 미국:천공 카아드 회계 방식 공사(IBM). EP1231716A2.2018-07-18 Retrieved.[2][3][4](NB다.이 특허는 DPD에 관한 것이다.)
- Bonten, Jo H. M. (2009-10-06) [2006-10-05]. "Packed Decimal Encoding IEEE-754-2008". Archived from the original on 2018-07-11. Retrieved 2018-07-11. (NB. 여기에서 이전 버전을 찾을 수 있다: 포장된 소수 인코딩 IEEE-754r.)
- Savard, John J. G. (2018) [2007]. "Chen–Ho Encoding and Densely Packed Decimal". quadibloc. Archived from the original on 2018-07-03. Retrieved 2018-07-16.