Обсуждение:Реализации алгоритмов/Циклический избыточный код
Добавить темуВсе представленные алгоритмы неверны. Списывают друг у друга эти алгоритмы как обезьянки, не давая себе труда разобраться в его сути.
Вектор инициализации CRC должен быть не 0 и не 0xFF(FF...).
Вектор инициализации CRC это 0xFF(FF...) прокрученный один раз через 8 (или 16, или 32) циклов алгоритма. Например, для CRC8 с полиномом 0x31 вектор инициализации равен 0xAC.
Естественно, это верно только для ускоренных версий реализации CRC, которые пропускают первые 8 (16, 32) циклов с начальным значением 0xFF(FF...). Среди представленных алгоритмов к ускоренным относятся абсолютно все. Anpaza (обсуждение) 23:44, 5 ноября 2014 (UTC)
- Так поправьте, чтобы было правильно. В этом и сила технологии wiki, что можно и нужно исправлять ошибки других. Oleg3280 (обсуждение) 10:54, 6 ноября 2014 (UTC)
Последний алгоритм (генерация таблицы) явно некорректен - полином ни разу не будет заксорен. Кажется, для правильности надо _crc = x<<(32-8), но я не уверен. Ddiver (обсуждение) 20:51, 15 февраля 2016 (UTC)