0 / 0 / 1
Регистрация: 06.01.2010
Сообщений: 20
1

Арифметическое кодирование: верхняя и нижняя границы сошлись

24.03.2010, 20:26. Показов 1181. Ответов 0
Метки нет (Все метки)

ну не совсем сошлись..
Что делать если верхняя и нижняя грарицы отличаються на 1?(происходить зацикливание)

в статье Мастрюкова нашёл такое:
"Сделаем следующее: удалим вторые по значи¬мости цифры границ и ос¬тальные менее значимые сдвинем влево по описанным правилам. Старшие цифры останутся на месте. Затем увеличим специальный счетчик, чтобы запомнить то, что мы выбросили цифры.
Будем продолжать те же действия до тех пор, пока старшие цифры границ не совпадут. Затем в код сооб¬щения помещается совпавшая старшая цифра, а за ней равное счетчику количество девяток или нулей, в зависимости от того, к цифре верхней или нижней границы сошлись старшие цифры."

но мне не понятно как это реализовать, в том плане, что в статье речь идет о десятичных цифрах, а у меня же только биты. В смысле как я запишу девятки и нули? как вообще можно записать ДЕВЯТКУ?
буду рад любой ссылоке.
вот мой код без комментариев. хотя слова МОЙ и КОД тут не сильно уместны)) :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
while(file.read((char *)&ch, sizeof(ch)))
{
    h = diapason[(unsigned char )ch];
    if((unsigned char)ch == 0)
        l = 0;
    else
        l = diapason[(unsigned char )ch - 1];
    LL = L;
    HH = H;
    L = LL + l * (HH - LL + 1) / delitel;
    H = LL + h * (HH - LL + 1) / delitel - 1;
    for(;;)
    {
        if(H < half)
            BitsToStream(false, bittoflow, arch);
        else if(L >= half)
        {
            BitsToStream(true, bittoflow, arch);
            L -= half;
            H -= half;
        }
        else if((L >= firstQTR)&&(H < thirdQTR))
        {
            bittoflow++;
            L -= firstQTR;
            H -= firstQTR;
        }
        else break;
        L = 2 * L;
        H +=  H + 1;
    }
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2010, 20:26
Ответы с готовыми решениями:

Верхняя нижняя границы A,B
Привет, ребята! Подскажите какой формулой можно рассчитать границу А и В. Применяется в...

Верхняя и нижняя граница типов
Здравствуйте, подскажите пожалуйста есть ли в С++ функции подобные low и high из Pascal, чтобы...

верхняя и нижняя суммы Дарбу
Нужно составить верхнюю и нижнюю сумму Дарбу для ф-ии f(x,y) = x - y на прямоугольнике \Pi =...

Точная верхняя и нижняя грань
Докажите, что множество действительных чисел вида {4+2/n}, где n \in N , ограничено .Найдите...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2010, 20:26

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Отображение недели (верхняя или нижняя)
Всееееем Привет :) задача такая сделать что бы при старте программы (FormCreate) проводилось...

Верхняя и нижняя нумерация страниц в Word
На работе столкнулся с проблемой двойной нумерации в одном документе. Допустим верхняя нумерация...

Верхняя и нижняя нумерация, начинающаяся с разных листов
Есть готовый документ, в нем должна быть верхняя (в левом углу), и нижняя (в правом углу)...

Кто подскажет почему текстура на кубе (нижняя и верхняя грань) не фиксируются как боковые
Кто подскажет, почему текстура на кубе (на нижней и верхней гранях) не фиксируются как боковые....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.