CRC校验码

什么是CRC校验码?
CRC即循环冗余校验码(Cyclic Redundancy Check[1] ):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

如何校验?
它利用除法及余数的原理来进行错误检测,将整个数据块当成一个连续的二进制数据M(x),在发送时将多项式M(x)用另一个多项式(被称为生成多项式G(x))来除,然后利用余数进行校验。
基本思想
数据多项式M(X): M(X)可被看成系数为0或1的多项式,例如:
这里写图片描述
生成多项式G(X): G(X)必须比M(X)短,且高位和低位为1,例如:
这里写图片描述
假设要发送的信息用多项式M(X)表示,将M(x)左移r位(相当于M(x)*2r),这样M(x)的右边就会空出r位,这就是校验码的位置,用 M(x)*2r 除以生成多项式G(x)得到的余数就是校验码

计算步骤
将最高次幂为r的生成多项式G(x)转换成对应的r+1位的二进制数;
将信息码左移r位,相当于对应的信息多项式m(x)*2r;
用生成多项式(二进制数)对信息码做除运算,得到r-1位的余数;
将余数拼到信息码左移后空出的位置,得到完整的信道编码;

假设使用的生成多项式是G(X)=X3+X+1,4位的原始报文为1010,求编码后的报文
将生成多项式G(X)转换成对应的二进制除数:1011;
由于生成多项式有4位,所以计算所得的校验码为3位,即r=3;
原始报文M(X)=1010,左移3位变成1010 000;
用1011对1010 000进行模2除运算,相当于按位异或,得到余数011
将余数附加到1010的后边,得到最后的编码:1010 011;
在接收方,如果收到的是 1010 011,用其除以生成多项式 1011,能够整除,说明传输没有问题;若不能整除,则说明信道传输出错;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值