Вадим Палёнов
срочно делаю алгоритм хаффмана... сжатие)) пожалуйста помогите, может есть у кого-нибудь алгоритм с подробными объяснениями? глобальный вопрос:: как нам самим выделять биты на символ и заполнять их?? на символ ведь отводится 8 бит а мы некоторым должны меньше присвоить, некоторым больше.. как работать с количеством памяти выделяемым под символ?
Вадим Палёнов
команды может какие то там или указатели... вобще в этом не понимаю
Da Vo
всего 2 операции: побитовый сдвиг ( << или >> ) и побитовый или |
и все , ну это если дерево уже успешно построено или тебе известно уже новые коды для символов
Вадим Палёнов
непонятно как они ваще мне нужны зачем?
Вадим Палёнов
пример нужен простой чтоб разобраться
Da Vo
мдааа чувак иди и учись , если есть желание то научишься и поймешь, надо просто сделать с комментами то за деньги только
Савва Кузнецов
http://r... Вадим Палёнов
срочно делаю алгоритм хаффмана... сжатие)) пожалуйста помогите, может есть у кого-нибудь алгоритм с подробными объяснениями? глобальный вопрос:: как нам самим выделять биты на символ и заполнять их?? на символ ведь отводится 8 бит а мы некоторым должны меньше присвоить, некоторым больше.. как работать с количеством памяти выделяемым под символ?
Вадим Палёнов
команды может какие то там или указатели... вобще в этом не понимаю
Da Vo
всего 2 операции: побитовый сдвиг ( << или >> ) и побитовый или |
и все , ну это если дерево уже успешно построено или тебе известно уже новые коды для символов
Вадим Палёнов
непонятно как они ваще мне нужны зачем?
Вадим Палёнов
пример нужен простой чтоб разобраться
Da Vo
мдааа чувак иди и учись , если есть желание то научишься и поймешь, надо просто сделать с комментами то за деньги только
Савва Кузнецов
http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4_%D0%...
Вадим Палёнов
я алгоритм понял... мне нужен пример как работать с битами памяти
Дмитрий Кузнецов
очень просто. двоичная арифметика. отталкивайся от неё. Минимально адресуемое пространство - один байт, всё что меньше меняется через логику и знание того как выглядят значения в двоичном представлении.
Мансур Зиятдинов
Можно ещё http://www.cplusplus.com/reference/stl/bitset/
Вадим Палёнов
мне же память отделяемую под переменную нужно поменять... одну строку буквально хочу узнать, как эту память поменять...
Кирилл Быков
Вадим, Assignment operator тебе в помощь. И тему по-людски назови, не позорься.
Вадим Палёнов
если я пользуюсь операциями or и and то я смогу из 11001011 сделать допустим 00000101 но мне же надо уменьшать память а не просто изменять её мне надо получить не 00000101 а 101 как это сделать?
Da Vo
допустим у тебя есть символ A ="e; 0010"e; и B="e;1010"e;
и нужно это укомплектовать в 1 байт скажем.
берем байт char byte=0;
for(int i=0; i
{
(byte<<1) | int (A[i]-'0')
}
ну тоже самое с B , ну там сам додумаешься как лучше все организовать и сделать
byte=00101010 и выводу WriteInFile<<byte;
Вадим Палёнов
Da, а что значит "e;(A[i]-'0')"e; и какого типа A как ему присвоить 0010
Da Vo
Да это я так написал чтоб ты понял как биты писать тут. A это просто строка где храниться код символа, но это не важно ,надо понять как тебе работать с битами и байтами, реализовать можно по разному.
Вадим Палёнов
int a[30][10]; //делал тип и bool и byte эффект тот же
struct byt {
int a1: 8;};
struct byt aa;
a[0][0]=0;
a[0][1]=1;
a[0][2]=1;
a[0][3]=1;
a[0][4]=1;
a[0][5]=1;
a[0][6]=1;
a[0][7]=1;
aa.a1=a[0][0]<<7|a[0][1]<<6|a[0][2]<<5|a[0][3]<<4|a[0][4]<<3|a[0][5]<<2|a[0][6]<<1|a[0][7];
cout<<aa.a1; //127 выводит
fstream www("e;www"e;,ios::binary);
www.open("e;www"e;,ios::out);
www<<aa.a1;
www.close();
вот...проблема в том что в фал записывает127 и расценивает это как три байта а мне надо чтоб записывал 01111111 и расценивал как 1 байт
Da Vo
так и пиши не в инт а в чар тип
Вадим Палёнов
нее смайлики какие то... занимет один байт конечно но его не прочесть
Вадим Палёнов
или так и должно быть что мы не можем прочесть токак комп сможет потом деколировать?
Виталий Бородин
Если не хотите возиться с битами, bitset никто не отменял)