打印
[软件资料]

CRC校验的原理与应用

[复制链接]
20|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
forgot|  楼主 | 2025-7-7 13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原理:
CRC校验将数据视为一个二进制多项式,用一个预先定义好的生成多项式(Generator Polynomial) 进行模2除法,得到的余数作为CRC校验码。
例如:数据多项式 ÷ 生成多项式 = 商 ... 余数 → 余数 = CRC码。
接收方用同样的多项式去除接收到的数据(含CRC),余数为0则认为无错。

特点:
检测能力极强:
能检测所有单比特错误。
能检测所有双比特错误(如果生成多项式选得好)。
能检测奇数个比特错误。
能检测长度小于生成多项式阶数的突发错误(如16位CRC可检测≤16比特的连续错误)。
对长突发错误的检测概率接近 1 - 1/(2^n)(n=CRC位数)。
计算复杂度较高:涉及二进制多项式除法,但可通过查表法(Lookup Table)优化。
长度灵活:常用 CRC-8、CRC-16、CRC-32、CRC-64 等。
无纠错能力:仅检测错误(但可通过算法扩展实现纠错,如CRC用于RAID)。

生成多项式示例:
CRC-16-CCITT: x¹⁶ + x¹² + x⁵ + 1 (0x1021)
CRC-32 (Ethernet, ZIP): x³² + x²⁶ + x²³ + x²² + x¹⁶ + x¹² + x¹¹ + x¹⁰ + x⁸ + x⁷ + x⁵ + x⁴ + x² + x + 1 (0x04C11DB7)

典型应用:
数据链路层协议(如 Ethernet, PPP)。
存储系统(硬盘、SSD、RAID、ZIP/RAR压缩文件)。
无线通信(Wi-Fi, Bluetooth)。
文件系统(如 NTFS、ext4 的元数据校验)。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2017

主题

14305

帖子

59

粉丝