Расчет делителя CRC - PullRequest
       4

Расчет делителя CRC

8 голосов
/ 01 сентября 2011

Я пытаюсь понять CRC, и меня смущает вопрос, как вычислить «делитель».

В примере в Википедии делитель равен 11 (1011) для ввода 11010011101100

11010011101100 000 <--- input left shifted by 3 bits
1011               <--- divisor (4 bits) = x³+x+1
------------------
01100011101100 000 <--- result

Как рассчитывается делитель? В этом примере (x³ + x + 1) x равен 2? Откуда взялись 2?

Ответы [ 3 ]

2 голосов
/ 01 сентября 2011

Из раздела «Математика CRC» той же википедии начинается «Математический анализ этого процесса, похожего на деление, показывает, как выбрать делитель, который гарантирует хорошие свойства обнаружения ошибок». Это ключ к этому. Некоторые делители лучше, чем другие, поэтому вы просто находите стандартный и обычно используете его.

В нижней части этой страницы описаны некоторые из используемых CRC и полином, определяющий их делители.

1 голос
/ 01 сентября 2011

Это записано в следующем предложении @wikipedia:

Если входной бит над крайним левым битом делителя равен 0, ничего не делать.Если входной бит над крайним левым битом делителя равен 1, делитель XOR вводится во вход.

Что означает:

1101 xor 1011 => 0110
0 голосов
/ 06 марта 2014

Делитель в двоичном виде - это просто коэффициенты его полинома. х ^ 3 + х + 1 = 1 * х ^ 3 + 0 * х ^ 2 + 1 * х + 1 * 1; считайте коэффициенты, чтобы получить 1 0 1 1

                                                      maninder singh walia walia
...