|
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 82
|
|
Разбор программы "Архиватор"06.07.2013, 14:54. Показов 7780. Ответов 66
Метки нет (Все метки)
Всем доброго времени суток, ребят мне нужна помощь в программе, точнее прога есть, но не понимаю в ней(сижу в книгах разбираюсь, но получается долго).
Кто-нить помогите прокомментировать программу, так что бы было понятно(малость глуп)... Спасибо!
0
|
|
| 06.07.2013, 14:54 | |
|
Ответы с готовыми решениями:
66
Разбор программы Разбор программы Архиватор данных - возможна ли оптимизация программы? |
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|
| 21.07.2013, 00:46 | |
|
В этом примере на C++ вовсю используется арифметика с плавающей точкой.
С точки зрения математика, наверное, код замечателен своими алгоритмами. С точки зрения низкоуровнего программиста код - тихий ужас, потому как плавающая точка применена там, где можно все считать в целых числах.
0
|
|
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
|
| 21.07.2013, 02:14 | |
|
Вероятность вхождения символа-целочисленное значение?
Таковы условия задачи. Если писать на асме сам алгоритм сжатия,то для расчета префиксных кодов по сути нужны только частоты встречаемости.Это уже целочисленные. Добавлено через 9 минут Притом,кто мешает использовать FPU,а дальше параллельно использовать АЛУ или подготовить данные пересылкой,что бы не было простоя во время работы FPU?
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 21.07.2013, 14:03 | ||
|
unsigned long данных_символов, всего_символов, вероятность ; ... вероятность = 1000 * данных_символов / всего_символов ; printf("вероятность = 0.%03i\n", вероятность) ;
0
|
||
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
|
| 21.07.2013, 23:08 | |
|
ЭЭммм,по ходуу с теореей вероятномти у вас проблемы.
Сумма вероятностей всех элем ентов = 1. Подскажите в какую сторону мне округлять
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|
| 21.07.2013, 23:43 | |
|
Вероятность есть вещественное число не большее единицы. Но в программе для ее вычисления не требуется плавающая точка. Вероятность преспокойно считается в целых числах. Как - показано выше. Что тут непонятно ?
Синусы, косинусы, тангенсы, котангенсы тоже преспокойно считаются в целых числах. Иначе игрушки типа Doom/Quake при обсчете картинки вида из глаз тормозили бы по черному. В игрушках с обсчетом вида из глаз значения тригонометрических функций выгребаются из готовых таблиц, НО в виде целочисленных значений и именно в этом целочисленном виде используются.
0
|
|
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
|
| 22.07.2013, 05:45 | |
|
Вы так и не поняли до сих пор,что я подшучиваю?
Вот мой код.На асме легко решаеться взятием целой части и остатка. Что вы сказали лучше забудьте. Единственная проблема у С++ это работы с флагами.А так вполне для системного программирования Си подходит,но доверия к компилятору не питаю.Лично писал дрова на Си. int size_fr[256]={0};//частота встречаемости int count=0; //сумма частот встречаемости symbols[i].prob = (float)size_fr[i] / count; Добавлено через 16 минут Я всего то хотел сказать,что код на асме через структуры будет более читабельней,а не возиться с адресами.По мне со структурами с деревьями проще работать.Начал на FASMе писать но так за ночь и не успел,чтобы показать.На сортировке остановился. Впрочем парень обявил константы и к ним обращался. p.s.Забудьтьте.у меня сейчас не лучшее время для разговоров. Сегодня по бабушке было 40 дней,а уже придеться переезжать в отчий дом.Брата здесь оставлю. Добавлено через 24 минуты Впрочем,зачем меня слушать.Я ЛОХ в программировании.Поэтому забудем спор,и никпгда не используйте структур для сложных алгоритмов. Добавлено через 8 минут Тот код что я выкинул написал за 4 час,поэтому не придирайтесь.
0
|
|
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
||
| 22.07.2013, 06:51 | ||
|
на этом форуме я давно зарегистрирован ,мой последний пост http://forum.compression.ru/vi... 47a6e76a45
Советую начать с Ватолин Д., Ратушняк А., Смирнов М., Юкин В. Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео Сейчас изчаю PPMd,сделал распечатку. Добавлено через 45 минут
1
|
||
|
Ушел с форума
16376 / 7688 / 1080
Регистрация: 11.11.2010
Сообщений: 13,768
|
|
| 22.07.2013, 07:02 | |
|
0
|
|
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
|
| 22.07.2013, 07:33 | |
|
Извини Mikl___,но это по памяти вспомнилось.Где-то наткнулся,почитал,запомнил.
Но дело в том,что трансцедентные функции без таблиц FPU так быстро не смог бы обработать. Более сложные(по скорости)из них это корни и логорифмы.Сейчас потихому перехожу на SSE4.Но там не трансцедентных. P.s.Впрочем,ты ведь знаешь почему.На CUDA еще успееться,а мне для проверки результата и скорости.Почитайте про приз Хаттера. Добавлено через 12 минут Впрочем взять любой даташит по FPU и почитать,вроде там натыкался.Но у Зубкова в книге эти вопросы точно не разбираються. P.s.Всем остальным совет,изучайте ассемблер по книгам.На хорушую книгу и денег не жалко.
0
|
|
|
Ушел с форума
16376 / 7688 / 1080
Регистрация: 11.11.2010
Сообщений: 13,768
|
|||||||||||||||||||||||||||
| 22.07.2013, 09:12 | |||||||||||||||||||||||||||
0
|
|||||||||||||||||||||||||||
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
|
| 22.07.2013, 09:18 | |
|
Эммм,я так и не понял что Вы хотели сказать.
вычисление логорифма занимает 128 тактиков вот ссылочка на возведение в дробну степень(оно же корень,то что мне и надо) http://delphiworld.narod.ru/base/sqr_number.html Я ведь пытался обьяснить,что на CUDA хочу эти процессы расспаралелить.Возможно не говорил,это у меня в уме.
0
|
|
|
Ушел с форума
16376 / 7688 / 1080
Регистрация: 11.11.2010
Сообщений: 13,768
|
|
| 22.07.2013, 09:27 | |
|
Thread,
я пытался поделится целочисленными способами получения квадратного корня (и по аналогии корней других степеней), а определение целочисленного значения lg(X) можно сделать без всяких fyl2x простым целочисленным умножением на магическую целочисленную константу 4D10h = lg(2) * 65536
0
|
|
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
||
| 22.07.2013, 14:13 | ||
|
Ой,ой.
Я понял решение,но я ведь горю не о квадратах.Это степенные функции c вещенственным показателем. Кстати ,я уже модель придумал.Возможно перейду на PPMd Добавлено через 8 минут Честно говоря,я всю таблицу Брадиса перебрал в поисках альтернативы Шеннону.
0
|
||
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
|||
| 22.07.2013, 18:14 | |||
|
Просто, в ассемблере, как нигде, важен не столько сам алгоритм, сколько его лаконичная реализация в кодах процессора. Если Вы хотели показать всем мастер-класс сжатия данных, то на каком-нибудь другом форуме можно было бы порассуждать об оптимальном алгоритме, но на этом лучше показать как Вы сумели этот оптимальный алгоритм реализовать. Примеры на C++ здесь не впечатлят. Добавлено через 10 минут
0
|
|||
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
|
| 23.07.2013, 01:06 | |
|
Про FPU так пока и не нашел.Вот немного о ALU.Думаю этого достаточно,чтобы мне поверить.
Устройство FPU поищите сами.Мне пока не до этого. Блок целочисленных операций Первый и основной блок процессора. Хотя, правильнее сказать не блок, а блоки, так как их в процессорах несколько. Грубо говоря, на заре развития, кроме этого блока в процессоре практически ничего и не было. Основная задача ALU, начиная с самых первых моделей и заканчивая современными монстрами, не изменилась. Он все также работает с простыми (целыми) числами, производя операции сложения, вычитания, сравнения, преобразования чисел; выполняет простейшие логические операции, а также битовые сдвиги. Заметьте, что на ALU не возложены задачи умножения и деления, а все потому, что данные типы вычислений встречаются довольно редко, и как следствие для них выделили собственный блок – “целочисленный умножитель”, благодаря которому удалось поднять производительность ALU, избавив его от нестандартных задач. Операции деления также возложены на умножитель, и выполняются с помощью специальной таблицы констант. Вот такой, весьма простой блок, производительность которого напрямую влияет на производительность процессора во многих задачах, например офисных приложениях, многочисленных специфических программах для расчетов и.т.д. http://testlabs.kz/processors/... i-fpu.html
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 23.07.2013, 17:47 | ||
|
Умножитель - это умножитель. Если в него вставить готовую таблицу произведений байт на байт (всего 256*256 значений, а это приемлемо), то для умножения 16/32-разрядных чисел останется делать только сдвиги и сложения, а это перепутанные провода и простые логические вентили. Это быстро. Но умножение - не есть вычисление синуса. С синусом, как бы, совсем другое дело. Там так просто от необходимости вычисления итерациями не отделаешся.
0
|
||
|
programmer
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
|
|
| 23.07.2013, 17:57 | |
|
Таблица синусов до 90 градусов 90 значения типа float.Выше 90 в обратную сторону идут.Дальше теже значения только отрицательные.
Косинус это смещение по фазе на четверть от синуса.С остальным хз. Примерно так наверно.
0
|
|
|
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
|
|
| 24.07.2013, 09:22 | |
|
deleted
0
|
|
|
Ушел с форума
16376 / 7688 / 1080
Регистрация: 11.11.2010
Сообщений: 13,768
|
|
| 24.07.2013, 09:46 | |
|
0
|
|
| 24.07.2013, 09:46 | |
|
После попытки скачать архиватор, не удаляются программы Как из программы Java вызвать архиватор и заархивировать файл ? разбор программы Разбор программы 2 Разбор программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Жара жесть.
kumehtar 18.08.2026
Пролетают летом дни
Тридцать пять жары в тени.
Каждый август год от года
Дарит жаркую погоду.
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|