2011-09-01 54 views
6

Estoy tratando de entender CRC y me estoy confundiendo como la forma de calcular el 'divisor'.Cálculo del divisor CRC

En el example on wikipedia el divisor es 11 (1011) para la entrada de 11010011101100

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

cómo se calcula el divisor? En este ejemplo (x³ + x + 1) x es 2? ¿De dónde vienen los 2?

+2

El divisor en binario es solo los coeficientes de su polinomio. 'x^3 + x + 1' es igual a' 1 * x^3 + 0 * x^2 + 1 * x + 1 * 1'; lea los cofficients para obtener 1-0-1-1 – Nemo

Respuesta

1

Desde la sección "Matemáticas del CRC" de esa misma wikipedia que comienza "El análisis matemático de este proceso de división como revela cómo elegir un divisor que garantiza la buena de errores propiedades de detección ". Esta es la clave para eso. Algunos divisores son mejores que otros, por lo que solo debes encontrar uno estándar y usarlo normalmente.

La parte inferior de esa página describe algunos de los diferentes CRC utilizados y el polinomio que define sus divisores.

0

Está escrito en la siguiente @wikipedia frase:

Si el bit de entrada por encima del bit más a la izquierda del divisor es 0, no hacer nada. Si el bit de entrada que está sobre el bit del divisor más a la izquierda es 1, el divisor recibe XOR en la entrada.

Lo que significa:

1101 xor 1011 => 0110 
-2

El divisor en binario es solo los coeficientes de su polinomio. x^3 + x + 1 = 1 * x^3 + 0 * x^2 + 1 * x + 1 * 1; lea los cofficients para obtener 1 0 1 1

             maninder singh walia walia