577
правок
Изменения
→Коды переменной длины (Variable + Variable)
==== Алгоритм построения гамма-кода Элиаса ====
'''Способ первый:'''
1. Записать число в двоичном представлении;
2. Перед двоичным представлением дописать нули, количество нулей на единицу меньше количества битов двоичного представления числа.
'''Способ второй:'''
1. Выделить из целого числа старший значащий бит (самую большую степень 2, которую число включает — 2N) и младшие N бит;
==== Декодирование ====
1. Считать все нули, встречающиеся до первой 1. Пусть N — количество этих нулей;
2. Принимая во внимание единицу, которая станет первым битом целого числа, со значением 2^N, считать оставшиеся N цифр целого числа.
==== Пример кодирования числа 15 ====
1. Записать число 15 в двоичном представлении --> <tex>1111_2</tex>;
2. Дописать перед числом три нуля --> '''0001111'''.
==== Пример декодирования последовательности битов 000010001 ====
1. Считываем нули до первой единицы, N = 4;
2. Считываем единицу и N = 4 бит. Получаем 2^4 + <tex>0001_2</tex> = 17.