Sean L y H los límites del intervalo de codificación. Suponiendo 16 bits deprecisión para estos registros, inicialmente L ← 0000 y H ← FFFF.
Mientras existan símbolos a la entrada:
Sea s el siguiente símbolo a codificar y p(s) su probabilidad. Sea PL(s) laprobabilidad acumulada hasta el símbolo s - 1 y PH(s) la probabilidadacumulada hasta el símbolo s. Más formalmente,
y
Seleccionar el siguiente intervalo de codificación haciendo
y
donde
es el rango (tamaño) del intervalo de codificación.
Ejecutar en un lazo los siguientes pasos:
Si H < 8000 (nótese que siempre se cumple que L < H) emitir un 0.
Si L ≥ 8000 emitir un 1 y restar a L y H el offset 8000 para que no seproduzca un overflow: L ← L - 8000 y H ← H - 8000.
Si 4000 ≤ L < H < C000 (los dos MSb’s de L son 01 y los de H son
10). En esta situación no podemos ejecutar la transmisión incrementaly podríamos caer en un problema de underflow (los registros L y Hpodrían almacenar el mismo número). Para evitar esto, esplazaremosambos registros haciendo L ← L - 4000 y H ← H - 4000 (nótese queesto es equivalente a haber restado el valor 8000 después de la expansión)y anotamos el número de ocasiones que permanecemos en esta situación.La próxima vez que transmitamos un bit (debido al proceso de transmisiónincremental), transmitiremos además tantos bits contrarios a este comodicho número indique.*
En cualquier otro caso, salir del lazo.
Expandir el intervalo de codificación: L ← 2 × L y H ← 2 × H + 1.