Código delta de Elías

El código delta de Elias  es un código universal para codificar números enteros positivos, desarrollado por Peter Elias.

Codificación

Algoritmo para codificar el número N:

  1. Recuento  : el número de bits significativos en la representación binaria del número .
  2. Recuento  : el número de bits significativos en la representación binaria del número .
  3. Escribe ceros y una unidad.
  4. Agregar  : los bits menos significativos de la representación binaria del número sin el más significativo ( ).
  5. Agregar  : los bits menos significativos de la representación binaria del número sin el más significativo ( ).

De lo contrario, este algoritmo se puede describir de la siguiente manera:

  1. Recuento  : el número de bits significativos en la representación binaria del número .
  2. Codificar con el código gamma de Elias (γ(L)).
  3. Agrega la representación binaria del número sin el primero.

Es decir, tanto en el código delta como en el de Elias gamma, un número se codifica como un exponente (la capacidad de un número, el número de bits significativos) y una mantisa (bits realmente significativos), pero en el código gamma el exponente se escribe en forma unaria , y en el código delta se le aplica nuevamente la codificación gamma.

Un ejemplo de codificación del número 10:

  1. La representación binaria de un número tiene 4 bits significativos ( ).
  2. La representación binaria de un número tiene 3 bits significativos ( ).
  3. Escribimos cero y una unidad → .001
  4. Sumemos los bits del número sin la unidad más alta → .00
  5. Sumemos los bits del número sin la unidad más alta → .010
  6. Resultado - 00100010.

Los resultados de codificar los primeros 17 números (a modo de comparación, también se muestra el código gamma):

norte L METRO código delta Longitud,
poco

Probabilidad estimada
código gama Longitud,
poco
γ(L)
una una una una una 1/2 una una
2 2 2 01 0 0 cuatro 1/16 01 0 3
3 2 2 01 0 una cuatro 1/16 01 una 3
cuatro 3 2 01 1 00 5 1/32 001 00 5
5 3 2 01 1 01 5 1/32 001 01 5
6 3 2 01 1 diez 5 1/32 001 diez 5
7 3 2 01 1 once 5 1/32 001 once 5
ocho cuatro 3 001 00 000 ocho 1/256 0001 000 7
9 cuatro 3 001 00 001 ocho 1/256 0001 001 7
diez cuatro 3 001 00 010 ocho 1/256 0001 010 7
once cuatro 3 001 00 011 ocho 1/256 0001 011 7
12 cuatro 3 001 00 100 ocho 1/256 0001 100 7
13 cuatro 3 001 00 101 ocho 1/256 0001 101 7
catorce cuatro 3 001 00 110 ocho 1/256 0001 110 7
quince cuatro 3 001 00 111 ocho 1/256 0001 111 7
dieciséis 5 3 001 01 0000 9 1/512 00001 0000 9
17 5 3 001 01 0001 9 1/512 00001 0001 9

Con un procesamiento adicional de los valores originales, el código delta también se puede usar para codificar cero y enteros negativos (ver: Elias Gamma Code#Generalization ).

Decodificación

Algoritmo para decodificar un número del código delta de Elias:

  1. Recuento  : el número de ceros en el flujo de entrada hasta el primero.
  2. A uno le siguen los bits menos significativos del número , léelos y suma el valor al resultado . Si los bits en el flujo de entrada se escriben de mayor a menor, el primero después de la serie inicial de ceros se puede leer como parte de la representación binaria del número , en cuyo caso no es necesario agregarlo en un paso separado . .
  3. Luego vienen los bits menos significativos del número , léalos y agregue el valor al resultado .

Un ejemplo de decodificación de la secuencia de bits 001010001 :

  1. Lea del flujo 001 y determine que hay 2 ceros a la izquierda ( ) al principio.
  2. Lea los siguientes bits de la secuencia → 01 ; da _
  3. Lee los siguientes bits del flujo → 0001 ; da _

Eficiencia

Para los números 2, 3, 8…15 el código delta es más largo que el código gamma, para los números 1, 4…7, 16…31 la longitud del código delta es la misma que la longitud del código gamma, para todos los demás números, el código delta es más corto que el código gamma. En consecuencia, el código delta es menos rentable que el código gamma, más desigual es la distribución de probabilidad de los números codificados y más probables son sus valores cuando se acercan a cero.

Véase también

Literatura