专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

CRC校验的最底层原理是什么_java

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 16:49:24       共计:3625 浏览

CRC校验的最底层原理是什么?

CRC最基础的运算就是移位运算和异或运算。

由于硬件可以完成CRC运算,即固化CRC算法,故实际运算又被分成左移或右移运算,即CRC成员中的“CRC方向”。

CRC的成员有:

CRCn:常见的有CRC4,CRC8,CRC16,CRC32,CRC64。

权值:即多项式poly,它是CRC运算中的“密钥”,即算法的核心。

由于上面说过CRC算法分为左移或右移运算,故当左移运算时,权值的最低位D0为“1”时,CRC可逆,否则CRC不可逆。

当右移运算时,权值的最高位Dn-1为“1”时,CRC可逆。否则CRC不可逆。

通俗地说,多项式中含“+1”或“+X0”时,CRC可逆。否则CRC不可逆。

CRC方向:开始已经论述,分为左移或右移运算。

CRC初值:即CRC运算的初始值init,它只对第一个CRC待校验数据作用,并与其满足交换律。

CRC出值:即CRC运算过程结束后,它对最后一个运算过程的中间结果异或后的输出值xorout。

CRC结果:即CRC运算的最终校验和。

CRC表格:与CRC初值或CRC出值无关,并对连续的待校验数据(例如00-0xFF)进行CRC运算的校验和结果流。

CRC简写式:它包含了CRCn,CRC权值,CRC方向,CRC初值和CRC出值。它是CRC运算中最为完整的表述。

CRC算法:它至少有五种算法:

1.CRC移位算法。它没有CRC表格,主要是对CRC权值的移位和异或运算,故相对速度最慢。

2.CRC大表和单表算法,其中大表内有256个查表数据单元。只有一个CRC表格。

3.CRC小表和单表算法,其中小表内只有16个查表数据单元。只有一个CRC表格。它比大表算法慢一倍。

4.CRC大表和双表组合算法,它比算法2多了一个CRC表格,但数据宽度降低一倍,运算速度比算法2稍慢。它是低位数MCU的最佳选择。

5.CRC小表和双表组合算法,它比算法3多了一个CRC表格,但数据宽度降低一倍,运算速度比算法3稍慢。它是低位数MCU的最佳选择。

学习CRC最底层原理可以从以上5种算法中看出,特别是从移位算法中搞清楚CRC的基本原理和运算。

下图中的HotCRC计算器就可以自动生成任意CRC权值(CRC表格)的5种C语言表格和源码。

而且可以根据学习的要求生成更为详细带有调试信息的源码。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:SHA什么意思_java | ·下一条:高中起步晚吗_java

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有