Densely Packed Decimal
From Wikipedia, the free encyclopedia
Densely Packed Decimal (DPD) is a system of binary encoding for decimal digits.
The traditional system of binary encoding for decimal digits, known as Binary-coded decimal (BCD), uses four bits to encode each digit, resulting in significant wastage of binary data bandwidth (since four bits can store 16 states and are being used to store only 10). In 1971, Tien Chi Chen and Dr. Irving T. Ho devised a lossless code (now known as Chen-Ho encoding) which used Huffman coding to pack three digits into 10 bits using a scheme which allowed compression from or expansion to BCD with only two or three gate delays in hardware.
Densely Packed Decimal is an encoding which gives the same compression and speed advantages, but is not a prefix code; the particular arrangement of bits used confers further advantages:
- Compression of one or two digits (into the optimal four or seven bits respectively) is achieved as a subset of the 3-digit encoding. This means that arbitrary numbers of decimal digits (not just multiples of three digits) can be encoded efficiently. For example, 38 decimal digits can be encoded in 127 bits.
- The encodings for one or two decimal digits are right-aligned in the ten bits (the remaining bits being 0). This means that encoded decimal numbers can be expanded into a longer field simply by padding with zero bits; no re-encoding is necessary.
- The arrangement of the bits in the encoding allows all numbers in the range 0 through 79 to have the same right-aligned encoding as in BCD, which makes conversions of common small numbers trivial.
[edit] Examples
This table shows some representative decimal numbers and their encodings in BCD, Chen-Ho, and Densely Packed Decimal (DPD):
Decimal | BCD | Chen-Ho | DPD |
---|---|---|---|
005 | 0000 0000 0101 | 000 000 0101 | 000 000 0101 |
009 | 0000 0000 1001 | 110 000 0000 | 000 000 1001 |
055 | 0000 0101 0101 | 000 010 1101 | 000 101 0101 |
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 |
[edit] References
- Cowlishaw, M. F., Densely Packed Decimal Encoding, in IEE Proceedings – Computers and Digital Techniques, ISSN 1350-2387, Vol. 149, No. 3, pp102-104, IEE, May 2002.