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