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.
01111= 11Paso 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