Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ZigaZaga
0 / 0 / 0
Регистрация: 06.01.2010
Сообщений: 20
#1

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

24.03.2010, 20:26. Просмотров 731. Ответов 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;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2010, 20:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Арифметическое кодирование: верхняя и нижняя границы сошлись (C++):

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

Арифметическое кодирование на С++ - C++
Здравствуйте. Такая проблема: нужно реализовать алгоритм арифметического кодирования и декодирования. Кодирование у меня получилось. Но...

Арифметическое кодирование - C++
Добрый день. задали мне лабу: реализовать арифметическое кодирование. но мне не всё понятно в реализации... Надо ли разбивать на блоки...

Арифметическое кодирование - C++
Мне задали задание по арифм. кодировании. Я что-то не очень знаю что это такое и зчем его едят.... Прошу вас о помощи... Конкретнее было...

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

верхняя и нижняя суммы Дарбу - Математический анализ
Нужно составить верхнюю и нижнюю сумму Дарбу для ф-ии f(x,y) = x - y на прямоугольнике \Pi = \left{ {(x,y): 2\leq x\geq 4, 1\leq y\geq 3}...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2010, 20:26
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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