循环冗余检错码CRC
模2运算
模2加以及模2减等同于异或运算,即相同得0,相异得1
模2乘法模2除法样例如下
循环冗余检错码CRC
- 任何一个k位的帧看成为一个k-1次的多项式M(x):1011001 看成 x^6+x^4+x^3+1(k项k-1阶多项式)
- 设定一个多项式编码生成多项式G(x),G(x)为r阶,G(x)任意,但r<k(虽然这么说但一般有个标准)
- 计算x^rM(x)/G(x) = Q(x)+R(x),其中Q(x)为商、R(x)为余数
- 这样(x^rM(x)-R(x))一定能被G(x)整除,即余数为0,否则说明出现错误
样例:
- 帧:1101011011
- 除数:10011(也就是G(x))
- 传输帧:11010110111110(帧数据后面先添加4个0,然后再加上余数1110)
具体过程:11010110110000/10011得余数1110 ,11010110110000-1110 = 11010110111110,所以编码后得CRC码为:11010110111110
当这个码字达到接收方时,如CRC码在接收端能被10011整除则说明接收正确,如果不能被整除,则被检测到已出错
生成多项式G(x)的国际标准