Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

Дельта-код Элиаса  — это универсальный код для кодирования положительных целых чисел, разработанный Питером Элиасом.

Кодирование

Алгоритм кодирования числа N:

  1. Сосчитать  — количество значащих битов в двоичном представлении числа .
  2. Сосчитать  — количество значащих битов в двоичном представлении числа .
  3. Записать нулей и одну единицу.
  4. Дописать  — младших битов двоичного представления числа без старшей единицы ().
  5. Дописать  — младших битов двоичного представления числа без старшей единицы ().

Иначе этот алгоритм можно описать так:

  1. Сосчитать  — количество значащих битов в двоичном представлении числа .
  2. Закодировать с помощью гамма-кода Элиаса (γ(L)).
  3. Дописать двоичное представление числа без старшей единицы.

То есть и в дельта-, и в гамма-коде Элиаса число кодируется в виде экспоненты (разрядности числа — количества значащих битов) и мантиссы (собственно значащих битов), но в гамма-коде экспонента записывается в унарном виде, а в дельта-коде к ней ещё раз применяется гамма-кодирование.

Пример кодирования числа 10:

  1. В двоичном представлении числа 4 значащих бита ().
  2. В двоичном представлении числа 3 значащих бита ().
  3. Записываем нуля и одну единицу → 001.
  4. Дописывем биты числа без старшей единицы → 00.
  5. Дописывем биты числа без старшей единицы → 010.
  6. Результат — 00100010.

Результаты кодирования первых 17 чисел (для сравнения показан также гамма-код):

N L M Дельта-код Длина,
бит
Предполагаемая
вероятность
Гамма-код Длина,
бит
γ(L)
1 1 1 1 1 1/2 1 1
2 2 2 01 0 0 4 1/16 01 0 3
3 2 2 01 0 1 4 1/16 01 1 3
4 3 2 01 1 00 5 1/32 001 00 5
5 3 2 01 1 01 5 1/32 001 01 5
6 3 2 01 1 10 5 1/32 001 10 5
7 3 2 01 1 11 5 1/32 001 11 5
8 4 3 001 00 000 8 1/256 0001 000 7
9 4 3 001 00 001 8 1/256 0001 001 7
10 4 3 001 00 010 8 1/256 0001 010 7
11 4 3 001 00 011 8 1/256 0001 011 7
12 4 3 001 00 100 8 1/256 0001 100 7
13 4 3 001 00 101 8 1/256 0001 101 7
14 4 3 001 00 110 8 1/256 0001 110 7
15 4 3 001 00 111 8 1/256 0001 111 7
16 5 3 001 01 0000 9 1/512 00001 0000 9
17 5 3 001 01 0001 9 1/512 00001 0001 9

С помощью дополнительной обработки исходных значений дельта-код можно использовать также для кодирования нулевых и отрицательных целых чисел (см.: Гамма-код Элиаса#Обобщение).

Декодирование

Алгоритм декодирования числа из дельта-кода Элиаса:

  1. Сосчитать  — количество нулей во входном потоке до первой единицы.
  2. За единицей следуют младших битов числа , прочитать их и добавить к результату значение . Если биты во входном потоке записаны от старших к младшим, то первую единицу после ведущей серии нулей можно читать как часть двоичного представления числа , в этом случае добавлять отдельным шагом нет необходимости.
  3. Следом идут младших битов числа , прочитать их и добавить к результату значение .

Пример декодирования последовательности битов 001010001:

  1. Прочитать из потока 001 и определить, что в начале 2 ведущих нуля ().
  2. Прочитать из потока следующие бита → 01; это даёт .
  3. Прочитать из потока следующие бита → 0001; это даёт .

Эффективность

Для чисел 2, 3, 8…15 дельта-код длиннее гамма-кода, для чисел 1, 4…7, 16…31 длина дельта-кода совпадает с длиной гамма-кода, для всех остальных чисел дельта-код короче гамма-кода. Соответственно, дельта-код тем менее выгоднее гамма-кода, чем неравномернее распределение вероятностей кодируемых чисел и чем более вероятны их значения при приближении к нулю.

См. также

Литература

Эта страница в последний раз была отредактирована 13 сентября 2022 в 01:20.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).