|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrew Ezhguroff 2:5020/400 18 Jan 2002 05:16:29 To : Edward Avernin Subject : Re: Упаковка данных(принцип записи в файл) -------------------------------------------------------------------------------- Привет! "Edward Avernin" <edward@atnet.ru> сообщил(а): EA> Скажите по-подробнее как работает ф-ия EA> output_code(FILE *output,unsigned int code) EA> { EA> static int output_bit_count=0; EA> static unsigned long output_bit_buffer=0L; EA> output_bit_buffer |= (unsigned long) code << EA> (32-BITS-output_bit_count); EA> output_bit_count += BITS; EA> while (output_bit_count >= 8) EA> { EA> putc(output_bit_buffer >> 24,output); EA> output_bit_buffer <<= 8; EA> output_bit_count -= 8; EA> } EA> } Эта функция предназначена для записи в файл значений, длина которых (в битах) равна BITS. При этом надо смотреть случаи, когда BITS не кратно восьми (иначе трудно понять). EA> т.е. output_code(output,97); В твоем случае BITS==8 EA> и далее по ф-ии получаю : EA> т.к. a=1100001, то EA> output_bit_buffer = 1100001 00000000000000000000 //20 нулей output_bit_biffer=97<<(32-8-0); // 01100001000000000000000000000000 - 24 нуля EA> потом записывается в файл число 110 . EA> //putc(output_bit_buffer >> 24,output); putc(output_bit_buffer >> 24,output); // в файл записывается 8 левых бит, т.е. число 97 EA> после этой операции output_bit_buffer <<= 8; EA> !!! ОБЪЯСHИТЕ МHЕ ЭТОТ МОМЕHТ EA> получается что в буффере остается 10000000000000000000000000000 В буфере остается HОЛЬ. EA> Может просто я не понимаю операция "сдвиг влево" - это разве не то же EA> что например x<<y то же что и x*(2^y) ? Hе совсем: в Си символ "^" означает XOR. :-)) Впрочем твоя мысль правильна, но при анализе функции ты запутался в кол-ве нулей. С уважением, Андрей. -- Отправлено через сервер Talk.Ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Talk.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/6488256177d0.html, оценка из 5, голосов 10
|