Encoding
To code a number:
- Write it in binary.
- Subtract 1 from the number of bits written in step 1 and prepend that many zeros.
An equivalent way to express the same process:
- Separate the integer into the highest power of 2 it contains (2N) and the remaining N binary digits of the integer.
- Encode N in unary; that is, as N zeroes followed by a one.
- 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