Open In App

Elias Gamma Encoding in Python

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report
The Elias gamma code is a universal code that is used to encode a sequence of positive integers. It is developed by Peter Elias. It is most useful when the upper bound of integers cannot be determined beforehand.

Steps in Encoding:

To encode a number X,
  • Find the largest N, with 2^{N}\leq X(greater power of 2).
  • Encode N using Unary coding(i.e N zeroes followed by a one).
  • Append the integer (X-2^{N}) using N digits in Binary.
Example: Let’s consider an example where we want to encode 10, We can represent 10 as: 10=2^{3} + 2. Step1: Here, largest N = 3 Step2: N(=3) in Unary followed by a one = 0001 Step3: Now Representation of 2 in Binary using N(=3) digits = 010 So, Elias gamma encoding of 10 = 0001010 Below is the implementation of the above approach.
# Python3 implementation
from math import log
  
log2 = lambda x: log(x, 2)
  
def Unary(x):
    return (x-1)*'0'+'1'
  
def Binary(x, l = 1):
    s = '{0:0%db}' % l
    return s.format(x)
      
def Elias_Gamma(x):
    if(x == 0): 
        return '0'
  
    n = 1 + int(log2(x))
    b = x - 2**(int(log2(x)))
  
    l = int(log2(x))
  
    return Unary(n) + Binary(b, l)
      
print(Elias_Gamma(10))

                    
Output:
0001010

Last Updated : 10 Nov, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads