crc 校验错误_CRC计算

循环冗余码校验英文名称为 Cyclical Redundancy Check,简称 CRC,它具有更高性能 的检错能力。CRC 利用除法余数的原理来检测错误, 它将两个字节数据流进行二进制除法 (没有进位,使用 XOR 来代替减法)计算,其实余数称为校验码或者冗余码。发送数据时, 发送方在原始数据后面增加冗余码形成一个新的比特串,然后进行发送。 发送端得计算过程可以表示为公式(1.1).

(1.1)

其中:

(1.2)

表示原始的待发送的二进制数据,
是收发双方事先约定好的多项式,
的长度减1。接收端收到数据后,用收到的数据和
相除,如果余数为零则表示传输过程中没有出错,如果余数不为零则表示传输过程中出现错误。

c3b6559d595136621212f5429ba95e98.png

CRC发送和接收算过程如图1.10所示,发送方得到数后,利用除法计算获得冗余码,然后把冗余码添加到数据后面得到实际的发送码进行发送。接收方收到数据后进行进行除法计算,如果余数等于零,就认为数据没有发生错误,如果余数不等于零,就认为数据在传输的过程中发生了错误。

例如:待发送数据

,CRC发送码的计算过程如下:
  1. 计算冗余码的长度。因为多项式
    ,长度为4,冗余码
    的长度等于多项式长度减1,所以
  2. 计算
  3. 计算
    。除法计算中使用异或运算,最后的余数保留3位,该余数就是冗余码,也被称为校验码。激素然的过程如图1.11所示。
  4. 发送码

ad0ed7ade3011bb26e0f5af91cf61279.png

假设接收方收到数据为

仍然是
。接收方对这两个数据进行除法计算
,最后余数等于0,说明传输过程中没有发生错误。 如果在传输的过程第4个比特发生了错误,接收方实际收到的数据是
,计算
余数不等于0,说明数据发生了错误。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值