An '''Exponentialexponential-Golomb code''' (or just '''Exp-Golomb code''') of order <math>''k</math>'' is a type of [[Universal code (data compression)|universal code]], parameterized by a [[whole number]] <math> ''k</math>''. To encode a nonnegative integer in an order-<math>''k</math> '' exp-Golomb code, one can use the following method:
# Take the number in binary except for the last <math>''k</math>'' digits and add 1 to it (arithmetically). Write this down.
# Count the bits written, subtract one, and write that number of starting zero bits preceding the previous bit string.
# Write the last <math>''k</math>'' bits in binary.
For <math>''k'' = 0</math> the code begins:
0 => 1 => 1
1 => 10 => 010
Line 16:
...
Exp-Golomb coding for <math>''k'' = 0</math> is used in the [[H.264/MPEG-4 AVC]] video compression standard, in which there is also a variation for the coding of signed numbers by assigning the value 0 to the binary codeword '0' and assigning subsequent codewords to input values of increasing magnitude and alternating sign.
Exp-Golomb coding is also used in the [[Dirac (codec)|Dirac video codec]].
The <math>''k'' = 0</math> exp-Golomb code is identical to the [[Elias gamma coding|Elias gamma code]] of the same number plus one. Thus it can encode zero, whereas Elias gamma can only encode numbers greater than zero.
Despite the similar name, exp-Golomb is only somewhat similar to [[Golomb coding]], which is a type of entropy coding but not a universal code.