El código Elias o código gamma 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 cuando se codifican 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 (la distribución de probabilidad implícita del código se agrega para mayor claridad):
Para decodificar un entero codificado 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 [ dudosos ] 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 cero ni 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 cada código distinto de cero con un 1 y luego codificar el cero como un solo 0.
Una forma de codificar todos los números enteros es configurar una biyección , asignando números enteros (0, −1, 1, −2, 2, −3, 3, ...) a (1, 2, 3, 4, 5, 6). , 7, ...) antes de codificar. En 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 exponencial-Golomb generaliza el código gamma a números enteros con una distribución de ley de potencia "más plana", tal como 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.