촘촘하게 포장된 소수점

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로 채우는 방법을 보여준다.

빽빽하게 채워진 소수점 인코딩 규칙[5]
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

참고 항목

참조

  1. ^ 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.
  2. ^ 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.
  3. ^ 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.
  4. ^ ISO/IEC/IEEE 60559:2011. 2011. Archived from the original on 2020-06-03. Retrieved 2016-02-08.
  5. ^ 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.