|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Edward Avernin 2:5020/400 18 Jan 2002 00:58:01 To : Avernin Edward Subject : Re: Упаковка данных(принцип записи в файл) --------------------------------------------------------------------------------
Здравствуйте !
Скажите по-подробнее как работает ф-ия
output_code(FILE *output,unsigned int code)
{
static int output_bit_count=0;
static unsigned long output_bit_buffer=0L;
output_bit_buffer |= (unsigned long) code << (32-BITS-output_bit_count);
output_bit_count += BITS;
while (output_bit_count >= 8)
{
putc(output_bit_buffer >> 24,output);
output_bit_buffer <<= 8;
output_bit_count -= 8;
}
}
Вот я например хочу записать в файл 3 символа "abc".
ASCII-код их равен 97,98,99 соответсвенно. Сначала я указываю в параметр
ф-ии символ 'a',
т.е. output_code(output,97);
и далее по ф-ии получаю :
т.к. a=1100001, то
output_bit_buffer = 1100001 00000000000000000000 //20 нулей
потом записывается в файл число 110 .
//putc(output_bit_buffer >> 24,output);
после этой операции output_bit_buffer <<= 8;
!!! ОБЪЯСHИТЕ МHЕ ЭТОТ МОМЕHТ
получается что в буффере остается 10000000000000000000000000000
!!! ОБЪЯСHИТЕ МHЕ ЭТОТ МОМЕHТ
потом уже идет символ 98.
Может просто я не понимаю операция "сдвиг влево" - это разве не то же что
например x<<y то же что и x*(2^y) ?
Заранее благодарен.
С уважением Avernin E.
--- ifmail v.2.15dev5
* Origin: Artelecom-Internet News Server (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/909487471fd7.html, оценка из 5, голосов 10
|