CABAC кодирование - от десятичного к двоичному - PullRequest
0 голосов
/ 29 марта 2019

На этом сайте http://www.bilsen.com/aic/cabac.shtml есть хороший пример, показывающий, как работает арифметическое кодирование. Меня беспокоит одна вещь:

0,647705

преобразовано в это:

+0,101001011101

Очевидно, что это не "типичное" преобразование десятичных чисел в двоичные.

1 Ответ

1 голос
/ 29 марта 2019
0.647705 • 2 = 1 + 0.295410.
0.295410 • 2 = 0 + 0.590820.
0.590820 • 2 = 1 + 0.181640.
0.181640 • 2 = 0 + 0.363280.
0.363280 • 2 = 0 + 0.726560.
0.726560 • 2 = 1 + 0.453120.
0.453120 • 2 = 0 + 0.906240.
0.906240 • 2 = 1 + 0.812480.
0.812480 • 2 = 1 + 0.624960.
0.624960 • 2 = 1 + 0.249920.
0.249920 • 2 = 0 + 0.499840.
0.499840 • 2 = 0 + 0.999680.

Последовательность произведенных битов равна 1 0 1 0 0 1 0 1 1 1 0 0. Тогда, поскольку мы останавливаемся на последнем, мы видим, что остаток, .999680, больше чем ½, поэтомуокругляем последний бит с 0 до 1. Результат .1010010111101.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...