Ссылка на CR C Примечания зоопарка:
http://users.ece.cmu.edu/~koopman/crc/notes.html
Если вы посмотрите на таблицу для 3 битов cr c:
http://users.ece.cmu.edu/~koopman/crc/crc3.html
Вы можете видеть, что вторая запись, 0xb => x ^ 3 + x + 1, имеет HD (расстояние Хэмминга) 3 для 4 битов данных, для общий размер 7 бит. Это может обнаружить все 2-битные комбинации ошибок (из 7 битов), но некоторые 3-битные комбинации будут терпеть неудачу, очевидный случай, когда все биты должны быть равны нулю, будет
0 0 0 1 0 1 1 (when it should be 0 0 0 0 0 0)
Это простой пример, где Количество битов в полиноме определяется максимальным количеством битовых ошибок. Чтобы проверить HD = 3 (обнаружены 2-битные ошибки), были проверены все 21 случай 7-битного общего количества, 2-битные повреждены.
Если вы проверите 32-битные CRC, вы увидите, что 0x04c11db7 (ethe * 1033) * 802.3 имеет HD = 6 (обнаружение 5-битных ошибок) при 263 битах данных => 263 + 32 = 295 битов, тогда как 0x1f4acfb13, имеет HD = 6 при 32736 битах данных => 32736 + 32 = 32768 битов.
Вот статья в формате PDF о поиске хороших CRC:
https://users.ece.cmu.edu/~koopman/networks/dsn02/dsn02_koopman.pdf
Поиск "хороших" CRC для указанных c Расстояния Хемминга требуют определенных знаний о процессе. Например, в случае 0x1f4acfb13 с HD = 6 (обнаружение 5 плохих битов) существует 314 728 365 660 920 250 35068 возможных комбинаций из 5 битов с ошибками из 32768 битов, но 0x1f4acfb13 = 0x1f4acfb13 = 0xc85f * 0x801 * 0x3 * 0x3, и любой из терминов 0x3 (x + 1) обнаружит любое нечетное количество битов ошибки, что сокращает число поисков до 4 ошибочных битов. Для минимального размера сообщения, которое завершается неудачно с этим полиномом, первый и последние биты будут ба д. Это сокращает поиск до 2 из 5 битов, что сокращает количество случаев до 536 миллионов. Вместо вычисления CR C для каждой битовой комбинации можно создать таблицу CRC для каждого 1 бита во всем остальном 0-битном сообщении, а затем записи таблицы, соответствующие указанным c битам, могут быть скорректированы на скорость до процесса. Для полинома, в котором он не является первым и последним битами, таблица CR C может быть сгенерирована для всех 2-битных ошибок (при условии, что такая таблица помещается в памяти), затем сортируется, затем проверяется на наличие дублирующихся значений ( с отсортированными данными это требует только одного последовательного прохода отсортированной таблицы). Дублирующиеся значения будут соответствовать 4-битному отказу. Другие ситуации потребуют других подходов, а в некоторых случаях это все еще занимает много времени.