Изменения
Перейти к навигации
Перейти к поиску
мСтрока 2:
Строка 2:
− Чтобырший значащий бит (самую большую степень 2, которую число включает — 2<sup>N</sup>) и младшие N бит.+
+
+
+
+
+
Строка 13:
Строка 18:
+
+
+
+
+
+
+
+
+
+
+
− +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Строка 82:
Строка 125:
− +
откат правок 31.135.77.109 (обс.) к версии 5.18.207.11
== Описание алгоритма ==
== Описание алгоритма ==
Чтобы закодировать число:
# Записать его в двоичной форме.
# Перед двоичным представлением числа дописать нули. Количество нулей на единицу меньше количества битов двоичного представления числа.
Аналогичный способ описания этого процесса:
# Выделить из целого числа старший значащий бит (самую большую степень 2, которую число включает — 2<sup>N</sup>) и младшие N бит.
# Записать N в унарном коде; то есть N нолей, за которыми следует единица.
# Записать N в унарном коде; то есть N нолей, за которыми следует единица.
# Дописать N младших двоичных цифр числа следом за этим унарным кодом.
# Дописать N младших двоичных цифр числа следом за этим унарным кодом.
| 1 || 2<sup>0</sup> + 0 || 1 || 1/2
| 1 || 2<sup>0</sup> + 0 || 1 || 1/2
|-
|-
| 2 || 2<sup>1</sup> + 0 || 01 0 || 1/8
|-
| 3 || 2<sup>1</sup> + 1 || 01 1 || 1/8
|-
| 4 || 2² + 0 || 001 00 || 1/32
|-
| 5 || 2² + 1 || 001 01 || 1/32
|-
| 6 || 2² + 2 || 001 10 || 1/32
|-
| 7 || 2² + 3 || 001 11 || 1/32
|-
|-
| 8 || 2³ + 0 || 0001 000 || 1/128
|-
| 9 || 2³ + 1 || 0001 001 || 1/128
|-
|10 || 2³ + 2 || 0001 010 || 1/128
|-
|-
|11 || 2³ + 3 || 0001 011 || 1/128
|11 || 2³ + 3 || 0001 011 || 1/128
|-
|-
|12 || 2³ + 4 || 0001 100 || 1/128
|-
|13 || 2³ + 5 || 0001 101 || 1/128
|-
|14 || 2³ + 6 || 0001 110 || 1/128
|-
|15 || 2³ + 7 || 0001 111 || 1/128
|-
|16 || 2<sup>4</sup> + 0 || 00001 0000 || 1/512
|-
|17 || 2<sup>4</sup> + 1 || 00001 0001 || 1/512
|-
|… || || ||
|}
Распределение предполагаемых вероятностей для кодов добавлено для ясности.
Чтобы декодировать закодированное гамма-кодом Элиаса число следует:
# Считать все нули, встречающиеся до первой 1. Пусть N — количество этих нулей.
# Принимая во внимание единицу, которая станет первым (самая значащим) битом целого числа, со значением 2<sup>N</sup>, считать оставшиеся N цифр целого числа.
Гамма-кодирование используется в приложениях, где самое большое значение не может быть известно заранее, или чтобы сжать данные, в которых маленькие значения встречаются более часто чем большие.
== Обобщение ==
== Обобщение ==
* [[Дельта-код Элиаса]]
* [[Дельта-код Элиаса]]
[[Категория:Алгоритмы сжатия без потерь]до ре ми фа соль ля си]
[[Категория:Алгоритмы сжатия без потерь]]