Decodificación de Elias Delta en Python

En este artículo, vamos a implementar Elias Delta Decoding usando python.

Peter Elias ideó el código delta de Elias, que es un sistema universal para codificar números enteros positivos.

Sintaxis:

Codificación Elias Delta(X)= Codificación Elias Gamma (1+piso(log2(X))) + Representación binaria de X sin MSB.   

Acercarse:

  • Importe las bibliotecas requeridas y lea la string binaria codificada del usuario.
  • Lea/Cuente el número de ceros desde el bit más significativo hasta que vea el primer ‘1’ y guárdelo en una variable llamada ‘L’

Sintaxis:

L=0
while True:
   if not x[L] == '0':
       break
   L= L + 1
  • Considere que ‘L’ es el primer dígito y lea L bits más y suelte todos los bits hasta el bit L actual.
  • Saque los bits restantes y anteponga ‘1’ en el bit Más significativo.

Sintaxis:

x.insertar(0,’1′) 

  • Convierta el binario final en un entero que nos da el número original.

Ejemplo:

Deje que la string codificada de entrada sea 01111

Paso 1: lea/cuente el número de ceros desde el bit más significativo hasta que vea el primer ‘1’ y guárdelo en ‘L’ hasta que vea el primer ‘1’

En nuestro caso, L=1

Paso 2: Considere que ‘1’ como primer dígito lea L bits más (1 bit más) y suelte todo.

011 11= 11

Paso 3: Saque los bits restantes y anteponga ‘1’ en MSB.

111

Paso 4: Convierta la string binaria final en un número entero que nos da 7.

A continuación se muestra la implementación.

Ejemplo 1: Ejemplo para producir el valor de Elias Delta Decoding correspondiente a algún valor.

Python3

import math
  
  
def Elias_Delta_Decoding(x):
    x = list(x)
    L = 0
    while True:
        if not x[L] == '0':
            break
        L = L + 1
          
    # Reading L more bits and dropping ALL    
    x = x[2*L+1:]  
      
    # Prepending with 1 in MSB
    x.reverse()
    x.insert(0, '1')  
    n = 0
      
    # Converting binary to integer
    for i in range(len(x)):  
        if x[i] == '1':
            n = n+math.pow(2, i)
    return int(n)
  
  
x = '01111'
print(Elias_Delta_Decoding(x))

Producción:

7

Ejemplo 2: Ejemplo para producir el valor de Elias Delta Decoding correspondiente a algún valor.p

Python

import math
  
def  Elias_Delta_Decoding(x):
    x = list(x)
    L=0
    while True:
        if not x[L] == '0':
            break
        L= L + 1
      
    # Reading L more bits and dropping ALL
    x=x[2*L+1:] 
      
    # Prepending with 1 in MSB
    x.insert(0,'1') 
    x.reverse()
    n=0
      
    # Converting binary to integer
    for i in range(len(x)): 
        if x[i]=='1':
            n=n+math.pow(2,i)
    return int(n)
  
x = '0111100'
print(Elias_Delta_Decoding(x))

Producción:

28

Publicación traducida automáticamente

Artículo escrito por vinayedula y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *