CRC校验原理及步骤

CRC校验原理及步骤什么是 CRC 校验 CRC 即循环冗余校验码 是数据通信领域中最常用的一种查错校验码 其特征是信息字段和校验字段的长度可以任意选定 循环冗余检查 CRC 是一种数据传输检错功能 对数据进行多项式计算 并将得到的结果附在帧的后面 接收设备也执行类似的算法 以保证数据传输的正确性和完整性 CRC 校验原理 其根本思想就是先在要发送的帧后面附加一个数 这个就是用来校验的校验码 但要

什么是CRC校验?
CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。


CRC校验原理:
其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“
2除法”)。到达接收端后,再把接收到的新帧除以(同样采用“
2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。
模2除法:
模2除法与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。在循环冗余校验码(CRC)的计算中有应用到模2除法。
例:
CRC校验原理及步骤
CRC校验步骤:
CRC校验中有两个关键点,一是预先确定一个发送送端和接收端都用来作为除数的二进制比特串(或多项式),可以随机选择,也可以使用国际标准,但是最高位和最低位必须为1;二是把原始帧与上面计算出的除数进行模2除法运算,计算出CRC码。


具体步骤:
1. 选择合适的除数
2. 看选定除数的二进制位数,然后再要发送的数据帧上面加上这个位数-1位的0,然后用新生成的帧以模2除法的方式除上面的除数,得到的余数就是该帧的CRC校验码。注意,余数的位数一定只比除数位数少一位,也就是CRC校验码位数比除数位数少一位,如果前面位是0也不能省略。
3. 将计算出来的CRC校验码附加在原数据帧后面,构建成一个新的数据帧进行发送;最后接收端在以模2除法方式除以前面选择的除数,如果没有余数,则说明数据帧在传输的过程中没有出错。


CRC校验码计算示例:
现假设选择的
CRC生成多项式为
G
X
= X4 + X3 + 1,要求出二进制序列

CRC校验码。下面是具体的计算过程

①将多项式转化为二进制序列,由
G
X
= X4 + X3 + 1可知二进制一种有五位,第4位、第三位和第零位分别为1,则序列为11001
②多项式的位数位5,则在数据帧的后面加上5-1位0,数据帧变为
0000然后使用模2除法除以除数
11001,得到余数。
CRC校验原理及步骤
③将计算出来的CRC校验码添加在原始帧的后面,真正的数据帧为
0100再把这个数据帧发送到接收端。
④接收端收到数据帧后,用上面选定的除数,用模2除法除去,验证余数是否为0,如果为0,则说明数据帧没有出错。

CRC校验原理及步骤

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204321.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午8:33
下一篇 2026年3月19日 下午8:33


相关推荐

  • git 拉取代码两种方式

    git 拉取代码两种方式SSH 方式需要事先在本地生成密钥对 公 私钥 在 git 服务端配置公钥 gitclonessh git ip 地址 port 端口 项目路径 项目名 giteg gitclonessh git 10 10 10 11 2222 markix user service gitHTTP 方式 url 拼接帐号密码方式 gitclonehttp username password git http url eg gitclonehttp ma

    2026年3月26日
    2
  • windows Tasklist命令详解

    windows Tasklist命令详解“Tasklist”命令是一个用来显示运行在本地或远程计算机上的所有进程的命令行工具,带有多个执行参数。作用:结束一个或多个任务或进程。可以根据进程ID或图像名来结束进程。语法格式:TASKLIST[/Ssystem[/Uusername[/P[password]]]][/M[module]|/SVC|/V][/FIfilter][/FOformat][/NH]参数列表:/Ssystem指定连接…

    2022年5月24日
    183
  • 迅雷磁力bt链接下载器_种子搜索

    迅雷磁力bt链接下载器_种子搜索种子文件目录:C:\Users\jifeng\AppData\Local\Temp\magnetex

    2022年8月2日
    10
  • matlab随机矩阵分类,Matlab生成随机矩阵的详细方法

    matlab随机矩阵分类,Matlab生成随机矩阵的详细方法你们知道 Matlab 如何生成随机矩阵吗 怎么样开启这项功能呢 对此感兴趣的用户可以随绿软吧去下文看看 Matlab 生成随机矩阵的详细方法 Matlab 生成随机矩阵的详细方法首先需要知道 Matlab 中生成随机数的函数是 rand 可以在命令行窗口中输入 helprand 查看一下 rand 函数的用法 如图所示 如果想生成一个 4 行 6 列的矩阵 输入 rand 4 6 需注意的是默认生成的随机数是在 0 1 之间

    2026年3月17日
    2
  • python控制windows窗口,并输入数据_python执行windows命令

    python控制windows窗口,并输入数据_python执行windows命令这是一些用于设置多播接收器的Python代码.它在mac和linux上运行良好.importsocket,structADDR=’239.239.250.1’PORT=8001sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)s…

    2022年10月1日
    4
  • phpstorm永久激活码2021【注册码】「建议收藏」

    phpstorm永久激活码2021【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    135

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号