Aritmetické kódování je speciální kódování, které nekóduje jednotlivé symboly, ale vytváří kódové slovo pro celou zprávu. Vstupem do aritmetického kódování je vstupní text nad abecedou zdrojových jednotek, výstupem je reálné číslo z intervalu 0 včetně až 1:
€€ \mathrm{arithmetic}(N) \in \langle 0, 1) €€Protože všechna čísla ze zadaného intervalu začínají nulou, není nutné tuto nulu vkládat do kódového slova. U aritmetického kódování je dále nutné uložit informaci o počtu zakódovaných čísel, aby dekódovací algoritmus včas skončil s dělením intervalu. To lze vyřešit například dodáním speciálního symbolu označujícího konec vstupu nebo explicitním uvedením počtu zakódovaných symbolů předem. Kromě statického aritmetického kódování existuje i aritmetické kódování adaptivní.
| Symbol | Četnost | Pravděpodobnost | Kumulativní pravděpodobnost |
|---|---|---|---|
| A | 4 | 0,4 | 0 |
| B | 2 | 0,2 | 0 + 0,4 = 0,4 |
| C | 3 | 0,3 | 0 + 0,4 + 0,2 = 0,6 |
| konec | 1 | 0,1 | 0 + 0,4 + 0,2 + 0,3 = 0,9 |
| Krok | Kódovaný symbol | Low | Range |
|---|---|---|---|
| 0 | – | 0 | 1 |
| 1 | A | 0 | 0,4 |
| 2 | B | 0,16 | 0,8 |
| 3 | A | 0,16 | 0,032 |
| 4 | C | 0,1792 | 0,0096 |
| 5 | A | 0,1792 | 0,00384 |
| 6 | A | 0,1792 | 0,001536 |
| 7 | C | 0,1801216 | 0,0004608 |
| 8 | B | 0,18030592 | 0,00009216 |
| 9 | C | 0,180361216 | 0,000027648 |
| 10 | # | 0,1803860992 | 0,0000027648 |
Výsledným intervalem je 0,1803860992 včetně až 0,180388864. Z tohoto intervalu vybereme číslo, které má nejkratší binární zápis. Zvolme například 0,1803874969482421875, jehož binární obraz bez úvodní nuly je 0010111000101101111.