循环冗余校验码CRC
计算步骤
采用CRC,生成多项式为G(x) = x4 + x + 1,信息码是10111,则计算出CRC是什么?
1.判断校验位数,最高次方是几,就有几位校验位。这里最高次方是4,所以有4位校验位。
2.补齐数据位后面的0:几位校验位,就补几个0。这里补4个0,得到101110000。
3.提取系数:将多项式G(x) = 1*x4 +0*x3 +0x2+1*x1 + 1*x0中的系数提取出来,得到10011。
4.用第二步结果除以第三步(异或),余数就是CRC。
CRC循环冗余校验码总结
末尾加入CRC循环冗余校验码能检错不能纠错。
具有很强的检错能力,而且容易用硬件实现,广泛用于局域网。
CRC有可能有差错而检测不到,概率约1/256。
G(x)应该有某些简单的特性,才能检测出各种错误。例如,若G(x)包含的项数大于1,则可以检测单个错;若G(x)含有因子 x+1,则可检测出所有奇数个错。结论:具有r个校验位的多项式能检测出所有长度小于等于r的突发性差错。
| 标准 | 生成多项式 |
|---|---|
| CRC-CCITT | G(x) = x¹⁶ + x¹² + x⁵ + 1 |
| CRC-16 | G(x) = x¹⁶ + x¹⁵ + x² + 1 |
| CRC-12 | G(x) = x¹² + x¹¹ + x³ + x² + x + 1 |
| CRC-32 | G(x) = x³² + x²⁶ + x²³ + x²² + x¹⁶ + x¹² + x¹¹ + x¹⁰ + x⁸ + x⁷ + x⁵ + x⁴ + x² + x + 1 |
其中,CRC-32 被用在许多局域网中。



