Изменения
нет описания правки
'''Гамма-код Элиаса''' — это [[Универсальный код (сжатие данных)|универсальный код]] для кодирования положительных целых чисел, разработанный [[Элиас, Питер|Питером Элиасом]]. Он обычно используется при кодировании целых чисел, максимальное значение которых не может быть определено заранее.
'''Гамма-код Элиаса''' — это универсальный код для кодирования положительных целых чисел, разработанный Питером Элиасом. Он обычно используется при кодировании целых чисел, максимальное значение которых не может быть определено заранее.
== Описание алгоритма ==
Чтобы закодировать число:
Чтобы закодировать число:
# Запиишите его в двоичной форме.
# Запишите его в двоичной форме.
# Отнимите(вычтите) единицу из числа битов, записанных в шаге 1 и припишите спереди недостающие нули.
# Отнимите(вычтите) единицу из числа битов, записанных в шаге 1 и припишите спереди недостающие нули.
Аналогичный способ описания этого процесса:
Аналогичный способ описания этого процесса:
# Разделите целое число на самую большую степень 2, которую оно включает (2N), и на оставшиеся N двоичных цифр от данного целого числа.
# Разделите целое число на самую большую степень 2, которую оно включает (2N), и на оставшиеся N двоичных цифр от данного целого числа.
# Запишите N в унарном коде; то есть N нолей следующих за единицей.
# Запишите N в унарном коде; то есть N нолей следующих за единицей.
# Присоедините оставшиеся N двоичных цифр к этому представлению N.
# Присоедините оставшиеся N двоичных цифр к этому представлению N.
Начало кодирования:
Начало кодирования:
Чтобы декодировать закодированное Гамма кодом Элиаса число следует:
Чтобы декодировать закодированное Гамма кодом Элиаса число следует:
# Считать все встречающиеся до первой 1(единицы) нули. Назовем это количество нолей N.
# Считать все встречающиеся до первой 1(единицы) нули. Назовем это количество нолей N.
# Принимая во внимание единицу, которая была достигнута как первая цифра целого числа, с значением 2N, считайте оставшиеся N цифр целого числа.
# Принимая во внимание единицу, которая была достигнута как первая цифра целого числа, с значением 2N, считайте оставшиеся N цифр целого числа.
Гамма кодирование используется в приложениях, где самое большое значение не может быть известно заранее, или чтобы сжать данные, в которых маленькие значения встречаются более часто чем большие.
== Обобщения ==
== Обобщения ==
Гамма кодирование не подходит для кодирования нулевых значений или отрицательных чисел. Единственный способ закодировать ноль — прибавить к нему 1 до кодирования и отнять после декодирования. Другой способ — приписать в начале любой ненулевой код с 1 , а затем кодировать ноль как простой 0. Единственный способ закодировать все положительные числа — перед началом кодирования установить [[биекция|биекцию]] (соответствие), отображая целые числа из (0, 1, −1, 2, −2, 3, −3, …) в (1, 2, 3, 4, 5, 6, 7, …).
Гамма кодирование не подходит для кодирования нулевых значений или отрицательных чисел. Единственный способ закодировать ноль — прибавить к нему 1 до кодирования и отнять после декодирования. Другой способ — приписать в начале любой ненулевой код с 1 , а затем кодировать ноль как простой 0. Единственный способ закодировать все положительный числа — перед началом кодирования установить биекцию (соответствие), отображая целые числа из (0, 1, −1, 2, −2, 3, −3, …) в (1, 2, 3, 4, 5, 6, 7, …).
}
}
</source>
</source>
== Ссылки ==
== Ссылки ==
переведено из en-wiki
== См. также ==
== См. также ==
*[[Омега код Элиаса]]
* [[Омега код Элиаса]]
*[[Дельта код Элиаса]]
* [[Дельта код Элиаса]]
[[Категория:Алгоритмы сжатия без потерь]]
[[Категория:Алгоритмы сжатия без потерь]]