El código de Elias o código gamma de Elias es un código universal que codifica números enteros positivos desarrollado por Peter Elias . [1] : 197, 199 Se utiliza más comúnmente al codificar números enteros cuyo límite superior no se puede determinar de antemano.
Para codificar un número x ≥ 1:
Una forma equivalente de expresar el mismo proceso:
Para representar un número , Elias gamma (γ) utiliza bits. [1] : 199
El código comienza (se agrega la distribución de probabilidad implícita para mayor claridad):
Para decodificar un entero codificado con gamma de Elias:
La codificación gamma se utiliza en aplicaciones donde el valor codificado más grande no se conoce de antemano, o para comprimir datos [ dudoso – discutir ] en los que los valores pequeños son mucho más frecuentes que los valores grandes.
La codificación gamma es un componente básico del código delta de Elias .
La codificación gamma no codifica el cero ni los números enteros negativos. Una forma de manejar el cero es sumar 1 antes de codificar y luego restar 1 después de decodificar. Otra forma es anteponer un 1 a cada código distinto de cero y luego codificar el cero como un solo 0.
Una forma de codificar todos los números enteros es configurar una biyección , asignando los números enteros (0, −1, 1, −2, 2, −3, 3, ...) a (1, 2, 3, 4, 5, 6, 7, ...) antes de codificarlos. En el software, esto se hace más fácilmente asignando entradas no negativas a salidas impares y entradas negativas a salidas pares, de modo que el bit menos significativo se convierta en un bit de signo invertido :
La codificación Golomb exponencial generaliza el código gamma a números enteros con una distribución de ley de potencia "más plana", de la misma manera que la codificación Golomb generaliza el código unario. Implica dividir el número por un divisor positivo, comúnmente una potencia de 2, escribir el código gamma para uno más que el cociente y escribir el resto en un código binario ordinario.