CRC算法理解

CRC检验算法:

用途: 

一帧bit数据在网络中传输的时候,可能会因为网络中的某些错误导致传输的数据异常(bit位0变1,1变0),这个时候就需要在发送端与接收端制定某种校验数据的规则,来检验接收到的数据和发送的端是一致的,而这个校验规则就是我们需要制定的校验算法,CRC就是其中一种,能检测多位数据的校验算法


概念:
1. 首先,发送端和接收端都统一规定某一个除数(如:1101或者多项式表示为 x3 + x2 + 1)
2. 发送的m位数据 + n位CRC校验码 == 最终发出的数据 ---》》 发向网络
3. 接收端 《《== 接收到数据从网络中,将数据除以上面约定统一的除数,如果能够整除,就说明传输正确,失败就说明接收的数据有误,需要重传了;(这里的除法不是数学当中的除法,是多项式除法,具体请看下面的例子,涉及的除法均是多项式除法)

疑问:看了上面的三个步骤,你一定还在疑惑CRC码如何得来的,我告诉你CRC码就是CRC算法最终的输出结果,我们要求取的就是CRC码:
例子 -- 计算CRC码
1. 假设我们需要发送的原始数据为10110011,而我们的发送端和接收端统一的除数是 x4 + x3 + 1 = 11001,CRC算法规定,原始数据尾巴附加上(除数个数 - 1个0 )后, 才能让我们规定的除数去除,第一步除法就是
图片是盗用的哈:


2. 从上面看余数应该是100,但是CRC算法规定,CRC码必须只比除数少一位数,于是就给余数前面加一个0变成 0 1 0 0,而这个余数就是CRC码,原始数据加上CRC码就组成了我们最终发出去的数据:101100110100

3. 最后,在接收端,接收到的数据后除以规定的除数,能整除就OK了,CRC也计算完了。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

帅气好男人_Jack

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

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

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

打赏作者

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

抵扣说明:

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

余额充值