577
правок
Изменения
→Коды переменной длины (Variable + Variable)
Гамма-код Элиаса не подходит для кодирования нулевых значений или отрицательных чисел. Для того, чтобы закодировать ноль нужно прибавить к нему 1 до кодирования и отнять после декодирования. Чтобы закодировать все целые числа можно установить биекцию (соответствие), отображая целые числа из (0, 1, −1, 2, −2, 3, −3, …) в (1, 2, 3, 4, 5, 6, 7, …).
=== Дельта-код Элиаса ===
{{Определение
|id = def1
|definition ='''Дельта-код Элиаса ''' {{---}} это универсальный код для кодирования положительных целых чисел, разработанный Питером Элиасом. Как далее будет видно, дельта-код с некоторого числа короче гамма-кода.}}
==== Алгоритм построения дельта-кода Элиаса ====
'''Способ первый:'''
1. Сосчитать L - количество значащих битов в двоичном представлении числа N;
2. Сосчитать M - количество значащих битов в двоичном представлении числа L;
3. Записать M - 1 нулей и одну единицу;
4. С правой стороны дописать биты числа L без старшей единицы;
5. С правой стороны дописать биты числа N без старшей единицы (<tex>N_2</tex>).
'''Способ второй:'''
1. Сосчитать L - количество значащих битов в двоичном представлении числа N;
2. Закодировать L с помощью гамма-кода Элиаса;
3. Дописать к L справа двоичное представление числа N без старшей единицы.
==== Декодирование ====