Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Упаковка данных(принцип записи в файл)   Edward Avernin   18 Jan 2002 00:58:01 
 Re: Упаковка данных(принцип записи в файл)   Andrew Ezhguroff   18 Jan 2002 05:16:29 
 Re: Упаковка данных(принцип записи в файл)   Edward Avernin   19 Jan 2002 00:19:33 
 Re: Упаковка данных(принцип записи в файл)   Andrew Ezhguroff   19 Jan 2002 04:26:47 
Архивное /ru.algorithms/6488256177d0.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional