Кодирование Эвена – Родеха
(Перенаправлено из кодирования Эвена-Родеха )
Код Эвена-Родеха — универсальный код , кодирующий неотрицательные целые числа, разработанный Шимоном Эвеном и Майклом Родехом . [ 1 ]
Кодирование
[ редактировать ]Чтобы закодировать неотрицательное целое число N в кодировании Эвена-Роде:
- Если N не меньше 4, тогда задайте закодированное значение равным одному.
0
кусочек. В противном случае закодированное значение пусто. - Если N меньше 8, добавьте к закодированному значению 3 бита, содержащие значение N , и остановитесь.
- Добавьте к закодированному значению двоичное представление N .
- Сохраните количество битов, добавленных на шаге 3, как новое N. значение
- Вернитесь к шагу 2.
Чтобы декодировать целое число, закодированное Эвеном-Роде:
- значение в N. Прочитайте 3 бита и сохраните
- Если первый прочитанный бит был
0
тогда остановись. Декодированное число N. — - Если первый прочитанный бит был
1
затем перейдите к шагу 2.
- Если первый прочитанный бит был
- Изучите следующий бит.
- Если бит
0
затем прочитайте 1 бит и остановитесь. Декодированное число N. — - Если бит
1
затем прочитайте N бит, сохраните значение как новое значение N и вернитесь к шагу 2.
- Если бит
Примеры
[ редактировать ]Число | Кодирование | Подразумеваемая вероятность |
---|---|---|
0 | 000 |
1/8 |
1 | 001 |
1/8 |
2 | 010 |
1/8 |
3 | 011 |
1/8 |
4 | 100 0 |
1/16 |
5 | 101 0 |
1/16 |
6 | 110 0 |
1/16 |
7 | 111 0 |
1/16 |
8 | 100 1000 0 |
1/256 |
9 | 100 1001 0 |
1/256 |
︙ | ||
15 | 100 1111 0 |
1/256 |
16 | 101 10000 0 |
1/512 |
︙ | ||
2761 | 100 1100 101011001001 0 |
1/1,048,576 |
︙ |
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Даже Шимон ; Роде, Майкл (апрель 1978 г.). «Экономичное кодирование запятых между строками» . Коммуникации АКМ . 21 (4): 315–317. дои : 10.1145/359460.359480 .