CRC校验

1、循环冗余校验码,也称为CRC码。它是数据通信领域中最常用的一种差错校验码。其特征是信息字段和校验字段的长度可以任意选定。

2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。
例如:
1010111对应的多项式为x^6+x^4+x^2+x+1


多项式为x^5+x^3+x^2+x+1对应的代码101111


3、二进制位串如何对应多项式
例如:
1010111
首先,位串的长度为7,那么,多项式最高次幂为7-1=6,也就是x^6
 1    0    1    0    1    1    1
x^6 x^4 x^2 x^1 1

从上面,得出二进制位串对应的多项式
x^6+x^4+x^2+x+1


4、将信息码左移R位,相当于对应的信息多项式C(x)*x的R次方。
前提:
假设信息码(原文报文、发送信息位)为1010,生成多项式是G(x)=x^3+x+1。
R是指生成多项式最高次幂,也是校验码的位数。
所以,1010向左移3位,变成1010 000。
二进制1010 000 对应的信息多项式为x^6+x^4。(参考3)
说明:
假设信息码为1010。
二进制1010 对应的信息多项式为x^3+x。
1010向左移3位,变成1010 000
根据前提知道,1010 000对应的信息多项式为x^6+x^4。也就是(x^3+x)*x^3。

5、假设使用的生成多项式是G(x)=x^3+x+1。4位的原始报文为1010,求编码后的报文。
第一,生成多项式转换成相应的二进制
x^3+x+1相应的二进制位1011(标记为A)

第二步,原始报文向左移R位,也就是C(x)*x的R次方。
1010 000

第三步,得到向左移R位的二进制(标记为B)后,进行模2除(高位对齐),相当于按位异或。即相同为0,不同为1。得到R为余数。
1010 000
1011
---------
0001 000
1 011
---------
0000 011

得到011余数,也就是校验码
第四步,将余数拼到原始报文后面,就得到完整的CRC码,也就是发送码
1010 011


6、接收方如何校验
利用发送信息码对g(x)二进制做除。如果能除掉,也就是余数为0,则正确。(高位对齐)
如:
1010 011
1011
----------
0001 011
1 011
----------
0000 000


7、常见CRC码
名称         生成多项式         简记式*        应用举例
CRC-16 x16+x15+x2+1 8005 IBM SDLC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzj0470

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值