Elias Gamma Coding - Encoding

Encoding

To code a number:

  1. Write it in binary.
  2. Subtract 1 from the number of bits written in step 1 and prepend that many zeros.

An equivalent way to express the same process:

  1. Separate the integer into the highest power of 2 it contains (2N) and the remaining N binary digits of the integer.
  2. Encode N in unary; that is, as N zeroes followed by a one.
  3. Append the remaining N binary digits to this representation of N.

To represent a number, Elias gamma uses bits.

The code begins (the implied probability distribution for the code is added for clarity):

Number Encoding Implied probability
1 = 20 + 0 1 1/2
2 = 21 + 0 010 1/8
3 = 21 + 1 011 1/8
4 = 22 + 0 00100 1/32
5 = 22 + 1 00101 1/32
6 = 22 + 2 00110 1/32
7 = 22 + 3 00111 1/32
8 = 23 + 0 0001000 1/128
9 = 23 + 1 0001001 1/128
10 = 23 + 2 0001010 1/128
11 = 23 + 3 0001011 1/128
12 = 23 + 4 0001100 1/128
13 = 23 + 5 0001101 1/128
14 = 23 + 6 0001110 1/128
15 = 23 + 7 0001111 1/128
16 = 24 + 0 000010000 1/512
17 = 24 + 1 000010001 1/512

Read more about this topic:  Elias Gamma Coding