循环校验码 (CRC 是一种只能检错不能进行纠错的校验码)
他其实是利用了模2除法的计算方式 我用下面的例子简述一下使用方法。
原始报文为 “11001010101”,其生成多项式为:x4+x3+x+1.对其进行CRC编码后的结果为?
首先要先理解生成的多项式 x4+x3+x+1的含义,其中最高的次方代表二进制的位数,在本例中最高次方为4则生成的二进制数则有5位,x4代表最高位为1,其余以此类推将得到一串二进制码为 11011
所谓循环校验码的实现就是将原始报文除以这段二进制码,但是再除之前,需要对原始报文先进行补位,如何补位呢,这个也很好补,补上 生成的二进制数的位数-1个 0即可,所以报文将变成110010101010000(补上了4个0)
所以这个时候我们用 110010101010000 模二除以 11011
这里要切记,模二除法与普通的除法不同,模二的除法其实就是对数据进行异或处理。
什么是异或呢:异或运算是指: 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1
所以进行异或运算得出结果为:0011
来源:CSDN
作者:nb_zsy
链接:https://blog.csdn.net/nb_zsy/article/details/104086327