Изменения
оформление списка таблицей
# Сосчитать значащие биты в N и записать их количество в двоичном виде (Х)
# Сосчитать значащие биты в N и записать их количество в двоичном виде (Х)
# В двоичном представлении N, полученном на шаге 1, удалить старший бит и запомнить результат (Y).
# В двоичном представлении N, полученном на шаге 1, удалить старший бит и запомнить результат (Y).
# К X присоединить Y.
# К X присоединить Y.
# Добавить в начало число нулей, на единицу меньшее количества значащих бит в двоичном представлении X.
# Добавить в начало число нулей, на единицу меньшее количества значащих бит в двоичном представлении X.
Начало кодирования:
Начало кодирования:
{| class="standard" style="text-align:right"
! Число || Значение || N' || N || Кодирование || Предполагаемая<br />вероятность
|-
| 1 || 20 || 0 || 1 || 1 || 1/2
|-
| 2 || 21 + 0 || 1 || 2 || 01 0 0 || 1/16
|-
| 3 || 21 + 1 || 1 || 2 || 01 0 1 || 1/16
|-
| 4 || 2² + 0 || 2 || 3 || 01 1 00 || 1/32
|-
10 = 2³ + 2 => N' = 3, N = 4 => 00100010 "
| 5 || 2² + 1 || 2 || 3 || 01 1 01 || 1/32
11 = 2³ + 3 => N' = 3, N = 4 => 00100011 "
|-
12 = 2³ + 4 => N' = 3, N = 4 => 00100100 "
| 6 || 2² + 2 || 2 || 3 || 01 1 10 || 1/32
13 = 2³ + 5 => N' = 3, N = 4 => 00100101 "
|-
14 = 2³ + 6 => N' = 3, N = 4 => 00100110 "
| 7 || 2² + 3 || 2 || 3 || 01 1 11 || 1/32
15 = 2³ + 7 => N' = 3, N = 4 => 00100111 "
|-
16 = 24 + 0 => N' = 4, N = 5 => 001010000 1/512
| 8 || 2³ + 0 || 3 || 4 || 001 00 000 || 1/256
17 = 24 + 1 => N' = 4, N = 5 => 001010001 "
|-
…
| 9 || 2³ + 1 || 3 || 4 || 001 00 001 || 1/256
|-
|10 || 2³ + 2 || 3 || 4 || 001 00 010 || 1/256
|-
|11 || 2³ + 3 || 3 || 4 || 001 00 011 || 1/256
|-
|12 || 2³ + 4 || 3 || 4 || 001 00 100 || 1/256
|-
|13 || 2³ + 5 || 3 || 4 || 001 00 101 || 1/256
|-
|14 || 2³ + 6 || 3 || 4 || 001 00 110 || 1/256
|-
|15 || 2³ + 7 || 3 || 4 || 001 00 111 || 1/256
|-
|16 || 24 + 0 || 4 || 5 || 001 01 0000 || 1/512
|-
|17 || 24 + 1 || 4 || 5 || 001 01 0001 || 1/512
|-
|… || || || || ||
|}
Чтобы декодировать число из Дельта-кода Элиаса:
Чтобы декодировать число из дельта-кода Элиаса:
# Прочитать и сосчитать количество нулей из потока, пока не встретится 1. Пусть L — количество нулей.
# Прочитать и сосчитать количество нулей из потока, пока не встретится 1. Пусть L — количество нулей.
# Учитывая, что единица, которая была достигнута — это первая цифра целого числа, значение которого 2<sup>L</sup>, прочитать оставшиеся L цифр этого целого числа. Пусть N — прочитанное число.
# Учитывая, что единица, которая была достигнута — это первая цифра целого числа, значение которого 2<sup>L</sup>, прочитать оставшиеся L цифр этого целого числа. Пусть N — прочитанное число.
# Поместить единицу на первое место конечного вывода, который представляет собой значение 2<sup>N</sup>-1. Прочитать и добавить следующие N-1 цифр.
# Поместить единицу на первое место конечного вывода, который представляет собой значение 2<sup>N</sup>-1. Прочитать и добавить следующие N-1 цифр.
Пример:
Пример для 001010001:
# Читаем из потока 001 и определяем, что в начале кода 2 ведущих ноля.
# Читаем из потока 001 и определяем, что в начале кода 2 ведущих ноля.
# Читаем из потока еще 2 бита, то есть вместе с результатом первого шага получаем код 00101.
# Читаем из потока еще 2 бита, то есть вместе с результатом первого шага получаем код 00101.
# Декодируем 00101 = 5.
# Декодируем 00101 = 5.
# Вычисляем N' = 5 — 1 = 4 - число оставшихся бит для завершения чтения полного кода. Читаем 4 бита и получаем 0001=1.
# Вычисляем N' = 5-1 = 4 — число оставшихся бит для завершения чтения полного кода. Читаем 4 бита и получаем 0001=1.
# Закодированное число = 2<sup>4</sup> + 1 = 17.
# Закодированное число = 2<sup>4</sup> + 1 = 17.