CRC校验算法
来源:互联网 发布:数据库常用sql语句大全 编辑:程序博客网 时间:2024/05/18 01:38
CRC:循环冗余校验。它是在数据链路层被广泛使用的检错技术。
CRC原理:
发送端:
- 在发送端先把数据分为一组(即一帧),假定每组K个比特,假定要传送的数据是M
- 在每一组后边添加n位冗余码,然后构成一帧发送出去。即每组长度为K+n
- 确定冗余码的方法:
a. 用二进制模2运算进行2^N乘M的运算,这相当于给M后边添加N个0
b.用M除以双方事先约定好的长度为N+1的除数P
c.得到的余数R,这个R就是FCS(帧检验序列),把这个FCS序列添加到M后边然后发出去。
接收端:
- 在接收端把接受的数据以帧为单位进行CRC校验
- 把接收到的每一个帧都除以同样的P
- 如果余数为0,表示传送没有差错。
- 如果存在误码,则余数为0的概率非常小
模2运算:
模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。相当于二进制中的逻辑异或运算。
总结:在接收端对每一个帧进行计算,如果余数为0,就接受;如果不为0,则丢弃。
例如:
M=101001,
p=1101;
在发送端:
1.M=2^N*M=101001000;
2.用M除以P
3.得到余数R也就是FCS,将FCS加到M上,就得到要发送的帧了。
M=101001000+001=101001001
接收端:
M=101001001,P=1101,对数据进行CRC校验
余数为0,表示数据正确。
阅读全文
0 0
- CRC校验算法
- CRC校验算法
- CRC校验的算法
- CRC校验算法原理
- 【转】CRC校验算法
- CRC校验算法 转
- CRC校验算法
- CRC校验算法 STM32CRC
- CRC校验算法讲解
- CRC校验算法
- CRC校验算法
- CRC校验算法
- CRC校验算法
- CRC校验算法
- CRC校验算法
- CRC校验算法
- CRC校验算法
- CRC校验算法
- You haven't accepted the license agreements of the following SDK components:
- rails问题汇总
- CSS基础
- handler机制的原理
- Axure RP 8.0 用中继器(repeater)完成按钮点击添加下拉菜单和文字
- CRC校验算法
- LeetCode 11. Container With Most Water
- Python 的 with 语句
- linux下txt解析错误
- 淘宝新开店铺容易忽略的地方,如何安全提升宝贝排名
- Ignite Debug之put操作
- OpenCV中 变换模型求解的函数补充: 刚体变换(Rigid Transform)和仿射变换(Affine Transform)
- 通过Eclipse(CDT)使用OpenCV
- 毕业了,好久没有更新,,,