|
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 82
|
|
Разбор программы "Архиватор"06.07.2013, 14:54. Показов 7748. Ответов 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
|
||
|
Ушел с форума
16374 / 7686 / 1080
Регистрация: 11.11.2010
Сообщений: 13,765
|
|
| 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
|
|
|
Ушел с форума
16374 / 7686 / 1080
Регистрация: 11.11.2010
Сообщений: 13,765
|
|||||||||||||||||||||||||||
| 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
|
|
|
Ушел с форума
16374 / 7686 / 1080
Регистрация: 11.11.2010
Сообщений: 13,765
|
|
| 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
|
|
|
Ушел с форума
16374 / 7686 / 1080
Регистрация: 11.11.2010
Сообщений: 13,765
|
|
| 24.07.2013, 09:46 | |
|
0
|
|
| 24.07.2013, 09:46 | |
|
После попытки скачать архиватор, не удаляются программы Как из программы Java вызвать архиватор и заархивировать файл ? разбор программы Разбор программы 2 Разбор программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|
|
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
|
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
|
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
|
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время?
Никакой пенсии. Никакого нового. . .
|