Kódování Chen – Ho - Chen–Ho encoding

Chen-Ho kódování je paměťově efektivní alternativní systém binárního kódování pro desetinná místa .

Tradiční systém binárního kódování pro desítkové číslice, známý jako binárně kódované desetinné číslo (BCD), používá ke kódování každé číslice čtyři bity, což má za následek značné plýtvání šířkou pásma binárních dat (protože čtyři bity mohou ukládat 16 stavů a ​​používají se k ukládání pouze 10), a to i při použití zabaleného BCD .

Kódování snižuje požadavky na úložiště dvou desetinných číslic (100 stavů) z 8 na 7 bitů a požadavků na tři desetinná místa (1 000 stavů) z 12 na 10 bitů pomocí pouze jednoduchých booleovských transformací a vyhýbá se tak jakýmkoli složitým aritmetickým operacím, jako je základní převod .

Dějiny

V tom, co se zdá být vícenásobným objevem , některé z konceptů toho, co se později stalo známým jako kódování Chen -Ho, nezávisle vyvinuli Theodore M. Hertz v roce 1969 a Tien Chi Chen (陳 天機) (1928–) v roce 1971.

Hertz z Rockwellu podal patent na jeho kódování v roce 1969, který byl udělen v roce 1971.

Chen poprvé diskutoval o svých myšlenkách s Irvingem Tze Ho (何宜慈) (1921–2003) v roce 1971. Chen a Ho v té době oba pracovali pro IBM , i když na různých místech. Chen také konzultoval s Frankem Chin Tungem, aby nezávisle ověřil výsledky svých teorií. IBM podala na jejich jméno patent v roce 1973, který byl udělen v roce 1974. Minimálně do roku 1973 jim muselo být Hertzovo dřívější dílo známé, protože patent cituje jeho patent jako dosavadní stav techniky .

Se vstupy Josepha D. Rutledge a Johna C. McPhersona byla konečná verze Chen -Ho kódování rozeslána v IBM v roce 1974 a publikována v roce 1975 v časopise Communications of the ACM . Tato verze obsahovala několik vylepšení, primárně souvisejících s aplikací systému kódování. Představuje předponový kód podobný Huffmanovi .

Kódování bylo v roce 1975 označováno jako Chenovo a Hoovo schéma , Chenovo kódování v roce 1982 a od roku 2000 se stalo známým jako Chen -Ho kódování nebo Chen -Ho algoritmus . Poté, co na něj v roce 2001 patentoval, Michael F. Cowlishaw publikoval další upřesnění Chen – Ho kódování známého jako hustě zabalené desetinné (DPD) kódování v IEE Proceedings-Počítače a digitální techniky v roce 2002. DPD byl následně přijat jako desítkové kódování používané v IEEE 754-2008 a ISO/IEC/IEEE 60559: Standardy s plovoucí desetinnou čárkou 2011 .

aplikace

Chen poznamenal, že číslice od nuly do sedmi byly jednoduše zakódovány pomocí tří binárních číslic odpovídající osmičkové skupiny. Také postuloval, že by bylo možné použít vlajku k identifikaci odlišného kódování číslic osm a devět, které by byly kódovány pomocí jediného bitu.

V praxi se na proud vstupních bitů aplikuje řada booleovských transformací, které komprimují číslice kódované BCD z 12 bitů na tři číslice na 10 bitů na tři číslice. Reverzní transformace se používají k dekódování výsledného kódovaného proudu do BCD. Rovnocenných výsledků lze dosáhnout také pomocí vyhledávací tabulky .

Kódování Chen – Ho je omezeno na kódovací sady tří desetinných číslic do skupin po 10 bitech (takzvané declety ). Z 1024 stavů možných pomocí 10 bitů ponechává pouze 24 stavů nevyužitých (s bity nezáleží na tom, že jsou obvykle nastaveny na 0 při zápisu a ignorovány při čtení). S pouhým 0,34% plýtváním poskytuje o 20% účinnější kódování než BCD s jednou číslicí ve 4 bitech.

Hertz i Chen také navrhli podobná, ale méně účinná schémata kódování pro komprimaci sad dvou desetinných číslic (vyžadujících 8 bitů v BCD) do skupin po 7 bitech.

Větší sady desetinných číslic lze rozdělit do tří a dvouciferných skupin.

Patenty také pojednávají o možnosti přizpůsobit schéma číslicím zakódovaným v jakýchkoli jiných desetinných kódech než 8-4-2-1 BCD , jako jsou například Excess-3 , Excess-6 , Jump-at-2 , Jump-at-8 , Gray , Glixon , O'Brien typu I a Gray – Stibitzův kód . Stejné principy by bylo možné použít i na jiné základny.

V roce 1973 se zdá, že nějaká forma kódování Chen -Ho byla použita v hardwaru pro převod adres volitelné funkce emulace IBM 7070 / 7074 pro počítače IBM System / 370 Model 165 a 370 Model 168 .

Jedna prominentní aplikace používá 128bitový registr k uložení 33 desetinných číslic s trojciferným exponentem, což není méně než toho, čeho by bylo možné dosáhnout pomocí binárního kódování (zatímco kódování BCD by pro uložení stejného počtu číslic vyžadovalo 144 bitů).

Kódování pro dvě desetinná místa

Hertzovo kódování

Kódování desítkových dat Hertz pro jeden heptad (formulář 1969)
Binární kódování Desetinné číslice
Prostor kódu (128 států) b6 b5 b4 b3 b2 b1 b0 d1 d0 Kódované hodnoty Popis Výskyty (100 států)
50% (64 států) 0 A b C d E F 0 abc 0 def (0–7) (0–7) Dvě nižší číslice 64% (64 států)
12,5% (16 států) 1 1 0 C d E F 100 c 0 def (8–9) (0–7) Jedna nižší číslice,
jedna vyšší číslice
16% (16 států)
12,5% (16 států) 1 0 1 F A b C 0 abc 100 f (0–7) (8–9) 16% (16 států)
12,5% (16 států, 4 použité) 1 1 1 C X X F 100 c 100 f (8–9) (8–9) Dvě vyšší číslice 4% (4 státy)
12,5% (16 států, 0 použito) 1 0 0 X X X X 0% (0 států)
  • Toto kódování není zachování parity .

Early Chen -Ho kódování, metoda A

Kódování desetinných dat pro jeden heptad (forma z počátku roku 1971, metoda A)
Binární kódování Desetinné číslice
Prostor kódu (128 států) b6 b5 b4 b3 b2 b1 b0 d1 d0 Kódované hodnoty Popis Výskyty (100 států)
50% (64 států) 0 A b C d E F 0 abc 0 def (0–7) (0–7) Dvě nižší číslice 64% (64 států)
25% (32 států, 16 použitých) 1 0 x (b) C d E F 100 c 0 def (8–9) (0–7) Jedna nižší číslice,
jedna vyšší číslice
16% (16 států)
12,5% (16 států) 1 1 0 F A b C 0 abc 100 f (0–7) (8–9) 16% (16 států)
12,5% (16 států, 4 použité) 1 1 1 C x (a) x (b) F 100 c 100 f (8–9) (8–9) Dvě vyšší číslice 4% (4 státy)
  • Toto kódování nezachovává paritu.

Early Chen – Ho kódování, metoda B

Kódování desítkových dat pro jeden heptad (forma z počátku roku 1971, metoda B)
Binární kódování Desetinné číslice
Prostor kódu (128 států) b6 b5 b4 b3 b2 b1 b0 d1 d0 Kódované hodnoty Popis Výskyty (100 států)
50% (64 států) 0 A b C d E F 0 abc 0 def (0–7) (0–7) Dvě nižší číslice 64% (64 států)
12,5% (16 států) 1 0 C 0 d E F 100 c 0 def (8–9) (0–7) Jedna nižší číslice,
jedna vyšší číslice
16% (16 států)
12,5% (16 států, 4 použité) 1 0 C 1 X X F 100 c 100 f (8–9) (8–9) Dvě vyšší číslice 4% (4 státy)
12,5% (16 států) 1 1 F 0 A b C 0 abc 100 f (0–7) (8–9) Jedna nižší číslice,
jedna vyšší číslice
16% (16 států)
12,5% (16 států, 0 použito) 1 1 X 1 X X X 0% (0 států)
  • Toto kódování nezachovává paritu.

Patentované a konečné kódování Chen – Ho

Kódování desítkových dat pro jeden heptad (patentovaná forma z roku 1973 a konečná forma z roku 1975)
Binární kódování Desetinné číslice
Prostor kódu (128 států) b6 b5 b4 b3 b2 b1 b0 d1 d0 Kódované hodnoty Popis Výskyty (100 států)
50% (64 států) 0 A b C d E F 0 abc 0 def (0–7) (0–7) Dvě nižší číslice 64% (64 států)
25,0% (32 států, 16 použitých) 1 0 x (b) C d E F 100 c 0 def (8–9) (0–7) Jedna nižší číslice,
jedna vyšší číslice
16% (16 států)
12,5% (16 států) 1 1 1 C A b F 0 abc 100 f (0–7) (8–9) 16% (16 států)
12,5% (16 států, 4 použité) 1 1 0 C x (a) x (b) F 100 c 100 f (8–9) (8–9) Dvě vyšší číslice 4% (4 státy)
  • Za předpokladu určitých hodnot pro bity bez péče (fe 0) toto kódování zachovává paritu .

Kódování pro tři desetinná místa

Hertzovo kódování

Kódování desítkových dat Hertz pro jeden declet (formulář 1969)
Binární kódování Desetinné číslice
Prostor kódu (1024 států) b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 d2 d1 d0 Kódované hodnoty Popis Výskyty (1000 států)
50,0% (512 států) 0 A b C d E F G h 0 abc 0 def 0 ghi (0–7) (0–7) (0–7) Tři nižší číslice 51,2% (512 států)
37,5% (384 států) 1 0 0 C d E F G h 100 c 0 def 0 ghi (8–9) (0–7) (0–7) Dvě nižší číslice,
jedna vyšší číslice
38,4% (384 států)
1 0 1 F A b C G h 0 abc 100 f 0 ghi (0–7) (8–9) (0–7)
1 1 0 A b C d E F 0 abc 0 def 100 i (0–7) (0–7) (8–9)
9,375% (96 států) 1 1 1 F 0 0 A b C 0 abc 100 f 100 i (0–7) (8–9) (8–9) Jedna nižší číslice,
dvě vyšší číslice
9,6% (96 států)
1 1 1 C 0 1 d E F 100 c 0 def 100 i (8–9) (0–7) (8–9)
1 1 1 C 1 0 F G h 100 c 100 f 0 ghi (8–9) (8–9) (0–7)
3,125% (32 států, 8 použitých) 1 1 1 C 1 1 F ( 0 ) ( 0 ) 100 c 100 f 100 i (8–9) (8–9) (8–9) Tři vyšší číslice, bity b2 a b1, je to jedno 0,8% (8 států)
  • Toto kódování nezachovává paritu.

Rané kódování Chen -Ho

Kódování desetinných dat pro jeden declet (začátek roku 1971)
Binární kódování Desetinné číslice
Prostor kódu (1024 států) b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 d2 d1 d0 Kódované hodnoty Popis Výskyty (1000 států)
50,0% (512 států) 0 A b C d E F G h 0 abc 0 def 0 ghi (0–7) (0–7) (0–7) Tři nižší číslice 51,2% (512 států)
37,5% (384 států) 1 0 0 C d E F G h 100 c 0 def 0 ghi (8–9) (0–7) (0–7) Dvě nižší číslice,
jedna vyšší číslice
38,4% (384 států)
1 0 1 F G h A b C 0 abc 100 f 0 ghi (0–7) (8–9) (0–7)
1 1 0 A b C d E F 0 abc 0 def 100 i (0–7) (0–7) (8–9)
9,375% (96 států) 1 1 1 0 0 F A b C 0 abc 100 f 100 i (0–7) (8–9) (8–9) Jedna nižší číslice,
dvě vyšší číslice
9,6% (96 států)
1 1 1 0 1 C d E F 100 c 0 def 100 i (8–9) (0–7) (8–9)
1 1 1 1 0 C F G h 100 c 100 f 0 ghi (8–9) (8–9) (0–7)
3,125% (32 států, 8 použitých) 1 1 1 1 1 C F ( 0 ) ( 0 ) 100 c 100 f 100 i (8–9) (8–9) (8–9) Tři vyšší číslice, bity b1 a b0, je to jedno 0,8% (8 států)
  • Toto kódování nezachovává paritu.

Patentované kódování Chen -Ho

Kódování desetinných dat pro jeden declet (patentovaná forma z roku 1973)
Binární kódování Desetinné číslice
Prostor kódu (1024 států) b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 d2 d1 d0 Kódované hodnoty Popis Výskyty (1000 států)
50,0% (512 států) 0 A b d E G h C F 0 abc 0 def 0 ghi (0–7) (0–7) (0–7) Tři nižší číslice 51,2% (512 států)
37,5% (384 států) 1 0 0 d E G h C F 100 c 0 def 0 ghi (8–9) (0–7) (0–7) Dvě nižší číslice,
jedna vyšší číslice
38,4% (384 států)
1 0 1 A b G h C F 0 abc 100 f 0 ghi (0–7) (8–9) (0–7)
1 1 0 d E A b C F 0 abc 0 def 100 i (0–7) (0–7) (8–9)
9,375% (96 států) 1 1 1 1 0 A b C F 0 abc 100 f 100 i (0–7) (8–9) (8–9) Jedna nižší číslice,
dvě vyšší číslice
9,6% (96 států)
1 1 1 0 1 d E C F 100 c 0 def 100 i (8–9) (0–7) (8–9)
1 1 1 0 0 G h C F 100 c 100 f 0 ghi (8–9) (8–9) (0–7)
3,125% (32 států, 8 použitých) 1 1 1 1 1 ( 0 ) ( 0 ) C F 100 c 100 f 100 i (8–9) (8–9) (8–9) Tři vyšší číslice, bity b4 a b3, je to jedno 0,8% (8 států)
  • Toto kódování nezachovává paritu.

Konečné kódování Chen – Ho

Chen-Ho kódování desítkových dat pro jeden declet (konečná forma z roku 1975)
Binární kódování Desetinné číslice
Prostor kódu (1024 států) b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 d2 d1 d0 Kódované hodnoty Popis Výskyty (1000 států)
50,0% (512 států) 0 A b C d E F G h 0 abc 0 def 0 ghi (0–7) (0–7) (0–7) Tři nižší číslice 51,2% (512 států)
37,5% (384 států) 1 0 0 C d E F G h 100 c 0 def 0 ghi (8–9) (0–7) (0–7) Dvě nižší číslice,
jedna vyšší číslice
38,4% (384 států)
1 0 1 C A b F G h 0 abc 100 f 0 ghi (0–7) (8–9) (0–7)
1 1 0 C d E F A b 0 abc 0 def 100 i (0–7) (0–7) (8–9)
9,375% (96 států) 1 1 1 C 0 0 F A b 0 abc 100 f 100 i (0–7) (8–9) (8–9) Jedna nižší číslice,
dvě vyšší číslice
9,6% (96 států)
1 1 1 C 0 1 F d E 100 c 0 def 100 i (8–9) (0–7) (8–9)
1 1 1 C 1 0 F G h 100 c 100 f 0 ghi (8–9) (8–9) (0–7)
3,125% (32 států, 8 použitých) 1 1 1 C 1 1 F ( 0 ) ( 0 ) 100 c 100 f 100 i (8–9) (8–9) (8–9) Tři vyšší číslice, bity b2 a b1, je to jedno 0,8% (8 států)
  • Toto kódování nezachovává paritu.

Účinnost skladování

Účinnost skladování
BCD Nezbytné bity Bitový rozdíl
Číslice Státy Bity Prostor pro binární kód Binární kódování [A] 2místné kódování [B] 3místné kódování [C] Smíšené kódování Smíšené vs. binární Smíšené vs. BCD
1 10 4 16 4 (7) (10) 4 [1 × A] 0 0
2 100 8 128 7 7 (10) 7 [1 × B] 0 -1
3 1000 12 1024 10 (14) 10 10 [1 × C] 0 −2
4 10 000 16 16 384 14 14 (20) 14 [2 × B] 0 −2
5 100 000 20 131 072 17 (21) (20) 17 [1 × C+1 × B] 0 −3
6 1 000 000 24 1 048 576 20 21 20 20 [2 × C] 0 −4
7 10 000 000 28 16 777 216 24 (28) (30) 24 [2 × C+1 × A] 0 −4
8 100 000 000 32 134 217 728 27 28 (30) 27 [2 × C+1 × B] 0 −5
9 1 000 000 000 36 1 073 741 824 30 (35) 30 30 [3 × C] 0 −6
10 10 000 000 000 40 17 179 869 184 34 35 (40) 34 [3 × C+1 × A] 0 −6
11 100 000 000 000 44 137 438 953 472 37 (42) (40) 37 [3 × C+1 × B] 0 −7
12 1 000 000 000 000 48 1 099 511 627 776 40 42 40 40 [4 × C] 0 −8
13 10 000 000 000 000 000 52 17 592 186 044 416 44 (49) (50) 44 [4 × C+1 × A] 0 −8
14 100 000 000 000 000 000 56 140 737 488 355 328 47 49 (50) 47 [4 × C+1 × B] 0 −9
15 1 000 000 000 000 000 000 60 1 125 899 906 842 624 50 (56) 50 50 [5 × C] 0 −10
16 10 000 000 000 000 000 000 64 18 014 398 509 481 984 54 56 (60) 54 [5 × C+1 × A] 0 −10
17 100 000 000 000 000 000 000 68 144 115 188 075 855 872 57 (63) (60) 57 [5 × C+1 × B] 0 −11
18 1 000 000 000 000 000 000 000 72 1 152 921 504 606 846 976 60 63 60 60 [6 × C] 0 −12
19 10 000 000 000 000 000 000 000 76 18 446 744 073 709 551 616 64 (70) (70) 64 [6 × C+1 × A] 0 −12
20 80 67 70 (70) 67 [6 × C+1 × B] 0 −13
21 84 70 (77) 70 70 [7 × C] 0 −14
22 88 74 77 (80) 74 [7 × C+1 × A] 0 −14
23 92 77 (84) (80) 77 [7 × C+1 × B] 0 −15
24 96 80 84 80 80 [8 × C] 0 −16
25 100 84 (91) (90) 84 [8 × C+1 × A] 0 −16
26 104 87 91 (90) 87 [8 × C+1 × B] 0 −17
27 108 90 (98) 90 90 [9 × C] 0 −18
28 112 94 98 (100) 94 [9 × C+1 × A] 0 −18
29 116 97 (105) (100) 97 [9 × C+1 × B] 0 −19
30 120 100 105 100 100 [10 × C] 0 −20
31 124 103 (112) (110) 104 [10 × C+1 × A] +1 −20
32 128 107 112 (110) 107 [10 × C+1 × B] 0 −21
33 132 110 (119) 110 110 [11 × C] 0 −22
34 136 113 119 (120) 114 [11 × C+1 × A] +1 −22
35 140 117 (126) (120) 117 [11 × C+1 × B] 0 −23
36 144 120 126 120 120 [12 × C] 0 −24
37 148 123 (133) (130) 124 [12 × C+1 × A] +1 −24
38 152 127 133 (130) 127 [12 × C+1 × B] 0 −25

Viz také

Poznámky

Reference

Další čtení