循环冗余校验码
基本思想
设计一个数 如8 被4整除余数0,如数据7不能被4整除余数3
数据发送、接受约定一个“除数”
K个信息位+R个校验位作为“被除数”,添加校验位后保证除法余数位0
收到数据后,进行除法检查余数是否为0
题目:设生成多项式为G(X)=x3+x2+1,信息码为101001,求对应的CRC码
-
转换二进制系数
1101这个为除数
K=信息码的长度=6,R=生成多项式最高次幂=3——》校验码位数N=K+R=9
-
移位 计算机处理实现:信息码左移R位,低位补0
-
对移位后的信息码进行模2除法,产生余数
模2除运算理解:被除数最高位1则商1,之后模2减,模2减和模2加效果一样(异或运算)最终得到一个余数(位数只比除数少一位)
得到的信息位+余数得到CRC
-
检错和纠错
接受到的数据用1101进行模2除余数为000,余数不为0则出错
总结
循环冗余校验码有一定的纠错功能
K个信息位,R个校验位,若生成多项式选择得当,且2R>=K+R+1,则CRC码可纠正1位错
特点
可检测出所有奇数个错误
可检测出所有双比特的错误
可检测出所有小于等于校验位长度的连续错误