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). Densely Packed Decimal is a more efficient code that packs three digits into 10 bits using a scheme that allows compression from, or expansion to, BCD with only two or three gate delays in hardware.
The densely packed decimal encoding is a refinement of Chen-Ho encoding; it gives the same compression and speed advantages, but the particular arrangement of bits used confers additional 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=12×3+2 decimal digits can be encoded in 12×10+7=127 bits.
The subset encoding mentioned above is simply the rightmost bits of the standard 3-digit encoding; the encoded value can be widened simply by adding leading 0 bits.
All 7-bit BCD numbers (0 through 79) are encoded identically by DPD. This makes conversions of common small numbers trivial. (This must break down at 80, because that requires 8 bits for BCD, but the above property......