Bootstrap

循环冗余校验码

循环冗余校验码

基本思想

设计一个数 如8 被4整除余数0,如数据7不能被4整除余数3

数据发送、接受约定一个“除数”

K个信息位+R个校验位作为“被除数”,添加校验位后保证除法余数位0

收到数据后,进行除法检查余数是否为0

题目:设生成多项式为G(X)=x3+x2+1,信息码为101001,求对应的CRC码

  1. 转换二进制系数

1101这个为除数

K=信息码的长度=6,R=生成多项式最高次幂=3——》校验码位数N=K+R=9

  1. 移位 计算机处理实现:信息码左移R位,低位补0

  1. 对移位后的信息码进行模2除法,产生余数

    模2除运算理解:被除数最高位1则商1,之后模2减,模2减和模2加效果一样(异或运算)最终得到一个余数(位数只比除数少一位)

    得到的信息位+余数得到CRC

  2. 检错和纠错

    接受到的数据用1101进行模2除余数为000,余数不为0则出错

总结

循环冗余校验码有一定的纠错功能

K个信息位,R个校验位,若生成多项式选择得当,且2R>=K+R+1,则CRC码可纠正1位错

特点

可检测出所有奇数个错误

可检测出所有双比特的错误

可检测出所有小于等于校验位长度的连续错误

;