Skip to content

循环冗余校验码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-CCITTG(x) = x¹⁶ + x¹² + x⁵ + 1
CRC-16G(x) = x¹⁶ + x¹⁵ + x² + 1
CRC-12G(x) = x¹² + x¹¹ + x³ + x² + x + 1
CRC-32G(x) = x³² + x²⁶ + x²³ + x²² + x¹⁶ + x¹² + x¹¹ + x¹⁰ + x⁸ + x⁷ + x⁵ + x⁴ + x² + x + 1

其中,CRC-32 被用在许多局域网中。

例题

例一

例二

例三