Если сигнал меняется плавно, то величины разностей 0, ±1, ±2, ±3 встречаются наиболее часто (пусть для примера 90%). На них можно потратить 3 бита (коды от 000b до 110b). Остальные разности с модулями от 4 до 255 встречаются редко (оставшиеся 10%), тратим на них 3 + 9 = 12 бит (коды вида 111xxxxxxxxx). В результате в среднем поток, который имел вес 9 бит на сэмпл, будет иметь вес 3 * 0.90 + 12 * 0.10 = 3,9 бит на сэмпл. Сжатие более чем в 2 раза. Это значит, что по линии, по которой раньше проходил 1 поток, сейчас можно пустить 2.
Проблема возникает, когда сигнал перестаёт удовлетворять нашим допущениям (90% + 10%). Решений здесь может быть два: 1) кодировать с потерями, 2) смириться и пускать через канал более весомый поток данных. Алгоритм Хаффмана кодирует без потерь. ДИКМ в оригинальном патенте кодирует с потерями. Там это даже в железо намертво вшито.
Добавлено after 9 minutes 49 seconds:
[uquote="SpeedFighter",url="/forum/viewtopic.php?p=3675713#p3675713"]...но как-то не зашло.[/uquote]Это не серьёзное заявление в наш цифровой век. Если вам действительно интересно, то зайдите на
Википедию, в конце куча ссылок на литературу, благо что этот код изъезжен вдоль и поперёк.