CRC 循环冗余校验
CRC(循环冗余校验,Cyclic Redundancy Check)是一种基于多项式除法的错误检测算法,广泛应用于网络通信(如以太网、HDLC)、存储系统(如ZIP、RAID)等领域。以下是CRC计算的详细步骤,包括关键概念和具体示例。
1. CRC计算核心思想
- 多项式除法:将数据视为二进制多项式,用预定义的**生成多项式(Generator Polynomial)**对其做模2除法,得到的余数即为CRC校验码。
- 模2运算:无进位的二进制加减法(等价于异或操作
XOR
)。
2. 具体计算示例
示例数据(D):11010011
生成多项式(G):x^3 + x + 1
(二进制 1011
,CRC-3)
步骤1:数据补0
- 生成多项式最高次幂为3,补3个0:
D' = 11010011
+000
=11010011000
步骤2:模2除法过程
步骤3:生成传输帧
原始数据 + CRC
4. 关键注意事项
- 余数处理:
- 若余数位数不足
n
,需在高位补0
(如余数10
补为010
)。
- 若余数位数不足
- 硬件实现:
- 实际中常用移位寄存器+异或门电路高效计算(如以太网卡的CRC-32硬件加速)。
6. 为什么CRC适合错误检测?
- 高检错率:可检测所有单比特错误、双比特错误和奇数位错误。
- 低开销:计算速度快,硬件实现简单(对比复杂的纠错码)。
**模2除法(CRC计算核心步骤)
模2除法是CRC校验的核心计算过程,其本质是二进制多项式除法,但采用无进位的异或(XOR)运算。以下是分步详解,结合具体示例说明。
1. 模2除法的特点
- 运算规则:所有加减法均为按位异或(XOR),不产生进位或借位。
- 例如:
1 + 1 = 0
,0 - 1 = 1
(均等价于1 XOR 1 = 0
)。
- 例如:
- 对齐原则:每一步用生成多项式的最高位对齐被除数的当前最高位
1
。
2. 关键注意事项
- 补0规则:被除数需补
n
个0(n
为生成多项式最高次幂)。 - 余数位数不足时:在高位补
0
至固定长度。 - 生成多项式选择:不同CRC标准(如CRC-8/16/32)对应不同的生成多项式。