【CRC循环冗余校验-2】crc多项式及校验原理

  1. CRC多项式是为了生成一个除数,这个除数是模二运算的除数
  2. 示例:G(X) = X^{_{5}} + X^{2} + 1, 多项式生成的二进制序列位数是最高次幂加一,即6位,即从第0位开始到第5位,多项式中为0的位已经省略,原式为:G(X) = X^{5} +0^{4} + 0^{3} + X^{2} + 0^{1} + 1(0次幂为1),幂次数也即其位置,即:100101

如上,生成的二进制序列即为crc检验用到的除数,而crc校验码即数据补0后除(模二运算除)以这个除数后的余数,检验码位数比除数少一位,余数不足的位用0补足,数据补0即在原始数据后加上除数位数减一的0.

示例:原始数据:10110011, 多项式:G(X) = X^{4} + X^{3} + 1

           多项式生成除数序列:11001

           原始数据补零:10110011 0000   (除数为五位,故补4个0)

           10110011 0000  除以  11001  =  0100,即校验码:0100

原理:

  • 原始数据+crc校验码发送给接收端,即该序列除以多项式生成的除数得到余数为0
  • 接收端用收到的数据除以多项式生成的除数,若余数为0则数据正确,否则数据出错

你可能感兴趣的:(算法,crc校验)