CRC校验

CRC校验

即循环冗余校验,是数据通信领域中最常用的一种差错校验码,可以发现并纠正信息在存储或传送过程中连续出现的多位错误代码,其特征是信息字段和校验字段的长度可以任意选定。

循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。

CRC码是基于模2运算而建立编码规则的校验码,其特点是不考虑进位和借位的运算,规律如下:

(1) 模2加、模2减的结果相等

(2) 模2乘是按模2和求部分积之和

(3) 模2除是按模2减求部分余数,每求一位商应使部分余数减少一位。上商的原则是:当部分余数的首位为1,上商1;首位为0,上商0。当部分余数的位数小于除数的位数时,该余数即为最后余数。

CRC码的编码方法:

1) 设待编码的信息码组为Dn-1Dn-2......D2D1D0,共n位,可用多项式M(x)表示:

M(x)=Dn-1X^(n-1) + Dn-2X^(n-2) + ...... D2X^2 + D1X + D0X^0

注: 生成多项式应满足以下条件

        (1) 任何一位发生错误,都应使余数不为0

        (2) 不同位发生错误应使余数不同

        (3) 对余数继续作模2除,应使余数循环

2) 将信息码左移k位,得到M(x)*X^k,即得到n+k位的信息码组

Dn-1+k * Dn-2+k * Dn-3+k * ...... * D1+k * D0+k * 000....00  (k个0),空出来的K位用来拼接校验码

3) CRC码就是用多项式M(x)*X^k除以生成多项式G(x),所得余数作为校验位。为了得到K位余数,G(x)必须是K+1位。

设所得余数为R(x),商为Q(x),则有:M(x) * X^k = Q(x)*G(x) + R(x)

4) 将余数拼接在空出来的K位,就构成了CRC码,用多项式表示为 M(x)*X^k + R(x) = Q(x) * G(x) + R(x) +R(x) 

                                                                                                                                            = Q(x) * G(x)

若是在传送过程中不出错,则余数一定为0;若在传送过程中出错,则余数不为0,再由余数指出哪一位出错。


例如:

有效信息为 =11011,生成多项式G(x)=X^4 + X^3 +1


生成多项式为 G(x)=X^4 + X^3 +1,信息码组左移4位,得到 110110000

空出来的4位用余数补上, R(x) = 110110000 / 11001 


所得余数为 1011,所以CRC校验码为 11011 1011

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值