CRC循环冗余码计算

CRC校验算法

算法分为3个部分:要发送的数据(或接收的数据)、生成多项式、FCS帧校验序列(冗余码)。它是利用除法及余数的原理来作错误侦测的。

抽象例子帮助理解

9除2等于了2余数是1。其中9就好像是要发送的数据,2就像生成多项式,然后余数就是FCS帧校验序列(冗余码)。
接收方收到数据后,便进行将收到的数据加上FCS帧校验序列后,将结果除以生成多项式:(9+1)/2,其余数是0,那可以判断传输的数据完整。

实际例子

发送方要发送的数据是1100 0110 11,采用CRC校验生成多项式是10001,最终发送的数据:
首先要计算冗余码:
生成多项式的阶数为4,则要在发送的数据后面加4个0.(阶数表示二进制的最高位的阶级,如现在要计算的10001,就是 1 * 20+0 * 21+0 * 22+0 * 23+1 * 24,最大是24).
数据加完0后除以多项式,此时除法中余数减法采用异或防止出现位数相同时除数过大变成负数。

在这里插入图片描述

算出冗余码为1001,此时将冗余码加上数据码就是要发送的数据,1100 0110 1110 01也就是将后面红色标注的4个0赋值成冗余码
此时发送端发送。
在接收方收到后,接受方将发送方发来的信息先除以生成多项式,如果得到的余数为0,则校验成功就认为数据完整。如果不为0,则校验失败,丢弃数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值