Изменения

101 байт добавлено ,  16 лет назад
оформление списка таблицей
Строка 5: Строка 5:  
# Сосчитать значащие биты в N и записать их количество в двоичном виде (Х)
 
# Сосчитать значащие биты в N и записать их количество в двоичном виде (Х)
 
# В двоичном представлении N, полученном на шаге 1, удалить старший бит и запомнить результат (Y).
 
# В двоичном представлении N, полученном на шаге 1, удалить старший бит и запомнить результат (Y).
# К X присоединить Y.  
+
# К X присоединить Y.
 
# Добавить в начало число нулей, на единицу меньшее количества значащих бит в двоичном представлении X.
 
# Добавить в начало число нулей, на единицу меньшее количества значащих бит в двоичном представлении X.
   Строка 14: Строка 14:     
Начало кодирования:
 
Начало кодирования:
<source lang="html4strict">
+
{| class="standard" style="text-align:right"
                                        Предполагаемые вероятности
+
! Число || Значение || N' || N || Кодирование || Предполагаемая<br />вероятность
1 = 20 => N' = 0, N = 1 => 1             1/2
+
|-
2 = 21 + 0 => N' = 1, N = 2 => 0100      1/16
+
| 1 || 20 || 0 || 1 || 1 || 1/2
3 = 21 + 1 => N' = 1, N = 2 => 0101      "
+
|-
4 = 2² + 0 => N' = 2, N = 3 => 01100    1/32
+
| 2 || 21 + 0 || 1 || 2 || 01 0 0 || 1/16
5 = 2² + 1 => N' = 2, N = 3 => 01101      "
+
|-
6 = 2² + 2 => N' = 2, N = 3 => 01110      "
+
| 3 || 21 + 1 || 1 || 2 || 01 0 1 || 1/16
7 = 2² + 3 => N' = 2, N = 3 => 01111      "
+
|-
8 = 2³ + 0 => N' = 3, N = 4 => 00100000  1/256
+
| 4 || 2² + 0 || 2 || 3 || 01 1 00 || 1/32
9 = 2³ + 1 => N' = 3, N = 4 => 00100001  "
+
|-
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
</source>
+
|-
 +
|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:
 
  −
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.
  
Анонимный участник