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