【说明】“模2除法”
模2加法运算为:
1+1=0,0+1=1,0+0=0,无进位,也无借位;
模2减法运算为:
1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。
相当于二进制中的逻辑异或运算。也就是比较后,两者对应位相同则结果为“0”,不同则结果为“1”。
3、CRC校验原理
具体来说,CRC校验原理就是以下几个步骤:
(1)先选择一个用于在接收端进行校验时,对接收的帧进行除法运算的除数(是二进制比较特串,通常是以多
项方式表示,所以CRC又称多项式编码方法,这个多项式也称之为“生成多项式”)。
(2)看所选定的除数二进制位数(假设为k位),然后在要发送的数据帧(假设为m位)后面加上k-1位“0”,
然后以这个加了k-1个“0“的新帧(一共是m+k-1位)以“模2除法”方式除以上面这个除数,所得到的余数(也是二
进制的比特串)就是该帧的CRC校验码,也称之为FCS(帧校验序列)。但要注意的是,余数的位数一定要是比除数位
数只能少一位,哪怕前面位是0,甚至是全为0,也都不能省略。
(3)再把这个校验码附加在原数据帧(就是m位的帧,注意不是在后面形成的m+k-1位的帧)后面,构建一个新
帧发送到接收端;最后在接收端再把这个新帧以“模2除法”方式除以前面选择的除数,如果没有余数,则表明该帧在
传输过程中没出错,否则出现了差错。
4、生成步骤
1、将X的最高次幂为R的生成多项式G(X)转换成对应的R+1位二进制数。
2、将信息码左移R位,相当于对应的信息多项式C(X)*2R。
3、用生成多项式(二进制数)对信息码做除,得到R位的余数(注意:这里的二进制做除法得到的余数其实是模2除
法得到的余数,并
不等于其对应十进制数做除法得到的余数)。
4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。
5、CRC校验码的计算