Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2011, 18:49   #1
freeeeez
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 55
По умолчанию Алгоритм формирования CRC32 C++

Объясните пожалуйста зачем в коде csum>>1|csum<<31?
И почему через |?
Код:
 for(i=0; i<bytes_cnt; i++) {
              csum += buffer[i] ^ i;
              csum = (csum >> 1) | (csum << 31);
}
freeeeez вне форума Ответить с цитированием
Старый 24.05.2011, 20:40   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,724
По умолчанию

потому что в С++ нет циклического сдвига
p51x вне форума Ответить с цитированием
Старый 24.05.2011, 22:00   #3
freeeeez
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 55
По умолчанию

Тогда допустим если мы сдвигаем на 1 бит вправо к примеру 00110011 => 00011001
а затем на 7 бит влево 10000000 так как правые биты заменяются нулями??
Тогда какой в этом смысл? Или я не так понял процедуру?
freeeeez вне форума Ответить с цитированием
Старый 25.05.2011, 09:56   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,724
По умолчанию

00110011 => 00011001
00110011 => 10000000
10000000 | 00011001 => 10011001
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для формирования списка OscarWilde Microsoft Office Excel 5 26.12.2010 15:27
Контрольная сумма по алгоритму crc32 tish88 PHP 5 01.03.2010 14:44
MD5 и CRC32 файловый калькулятор Arnezami Софт 3 18.11.2009 03:13
crc32.exe ROD Безопасность, Шифрование 2 17.10.2009 13:54
Разработать процедуру формирования рисунка MaxMelnikov Помощь студентам 2 25.02.2009 22:00