CRC校验主要是通过指定一个多项式,例如G(x)=x4+x2+x,将数据加上通过多项式计算后得出的校验码后发送到接收端,接收端接收到数据后,用接收到的数据通过同样的计算除以多项式的值,若余数为0则数据无误,否则数据错误。
对于多项式,G(x)=x4+x2+x,可以看出总共有5位,从右往左数分别是第一位(x)是1,第二位(x2)是1,第四位(x4)是1,即G(x)表达的数是10110,共五位,校验位为k-1位,少一位即4位,例如要发送数据位100101011,可以在后面先补上4个0,用1001010110000模2除法除以生成的多项式10110,取得的余数便是校验位,余数位数要与校验位一致,不足前面补0。
例如 将要发送数据100101011,多项式是G(x)=x4+x2+x,计算crc校验位是多少?
解:通过多项式最高项x4可以看出,多项式是5位数,根据规则,crc校验位要少一位,为4位。由G(x)知,分别是第五位,第三位,第一位取1,即10110。 数据位100101011后面补上4个02除法除以生成的多项式10110。
注意,对于模2除法时上计算得出的101010100,若计算时不足5位则写0,并后移1位在做比较,两个箭头表示的是像箭头2指的0所在位对应的只有4位数不足五位,置0,并后退一位到3箭头,符合五位,置1,以此类推,具体如图箭头所指,具体步骤如下图:
故校验位CRC是1000,将1000与之前补的4个0替换,即要传输的数据是1001010111000。