Open In App

Elias Delta Encoding in Python

Last Updated : 03 Dec, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we are going to implement Elias Delta encoding using python.

Syntax:

Elias Delta Encoding(X)= Elias Gamma encoding (1+floor(log2(X))) + Binary representation of X without MSB.   

Implementation

First, we are going to implement Elias delta Encoding, Before writing code for Elias Delta Encoding.

Step 1:

  • Import log, floor functions from the math library to perform logarithmic operations.
  • Fetch input k from user to encode in Elias Gamma.
  • Using floor and log functions in the math module, find 1+floor(log2(X) and store it in variable N.
  • Find the unary coding of N, using (N-1)*’0’+’1′ which gives us a binary string with ‘1’ in a least-significant bit and N-1 ‘0’s in the remaining Most significant bits.

Example: Elias Gamma encoding for some value

Python3




def EliasGammaEncode(k):
    if (k == 0):
        return '0'
    N = 1 + floor(log(k, 2))
    Unary = (N-1)*'0'+'1'
    return Unary + Binary_Representation_Without_MSB(k)


Step 2:

  • Create a function that takes the input X and gives the result as a Binary representation of X without MSB.
  • Using “{0:b}”.format(k) find the binary equivalent of k and store it in a variable named binary.
    • The prefix zero just specifies which argument of format() should be used to fill the {}.
    • b specifies that the argument should be converted to binary form.
  • Return the string binary[1:] which is a Binary representation of X without MSB.

Example: Binary Representation without MSB

Python3




def Binary_Representation_Without_MSB(x):
    binary = "{0:b}".format(int(x))
    binary_without_MSB = binary[1:]
    return binary_without_MSB


Now we are going to write code for Elias Delta Encoding

Step 3:

  • Fetch input k from user to encode in Elias Delta.
  • Using floor and log functions in the math module, find 1+floor(log2(k).
  • Pass the result of 1+floor(log2(k) to Elias Gamma encoding function.

Example: Elias Delta Encoding for some value

Python3




def EliasDeltaEncode(x):
    Gamma = EliasGammaEncode(1 + floor(log(k, 2)))
    binary_without_MSB = Binary_Representation_Without_MSB(k)
    return Gamma+binary_without_MSB
 
 
k = int(input('Enter a number to encode in Elias Delta: '))
print(EliasDeltaEncode(k))


Step 4:

  • Get the result of Elias Gamma encoding and Binary representation of k without MSB
  • Concatenate both the results and print them on the console

Complete code to produce Elias Delta Encoding for some integer value

Python3




from math import log
from math import floor
 
def Binary_Representation_Without_MSB(x):
    binary = "{0:b}".format(int(x))
    binary_without_MSB = binary[1:]
    return binary_without_MSB
 
def EliasGammaEncode(k):
    if (k == 0):
        return '0'
    N = 1 + floor(log(k, 2))
    Unary = (N-1)*'0'+'1'
    return Unary + Binary_Representation_Without_MSB(k)
 
def EliasDeltaEncode(x):
    Gamma = EliasGammaEncode(1 + floor(log(k, 2)))
    binary_without_MSB = Binary_Representation_Without_MSB(k)
    return Gamma+binary_without_MSB
 
k =  14
print(EliasDeltaEncode(k))


Output:

00100110


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads