El código delta de Elias es un código universal para codificar números enteros positivos, desarrollado por Peter Elias.
Algoritmo para codificar el número N:
De lo contrario, este algoritmo se puede describir de la siguiente manera:
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:
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 ).
Algoritmo para decodificar un número del código delta de Elias:
Un ejemplo de decodificación de la secuencia de bits 001010001 :
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.