Изменения

Перейти к: навигация, поиск

Гамма-, дельта- и омега-код Элиаса

1575 байт добавлено, 01:44, 27 ноября 2014
Коды переменной длины (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 без старшей единицы.
 
==== Декодирование ====
577
правок

Навигация