天天看点

CRC校验码计算:多项式除法-模2除法

问题

  • 循环冗余校验码(Cyclic Redundancy Check,CRC)是数据通信领域中最常用的一种差错校验码,该校验方法中,使用【多项式除法】,也就是【模2除法】运算后的余数为校验字段。
  • 如数据信息为

    n

    位,则将其左移

    k

    位后,被长度为

    k+1

    位的【生成多项式】相除,所得的

    k

    位余数即构成

    k

    个校验位,构成

    n+k

    位编码。
  • 若数据信息为

    1100

    ,生成多项式为

    X³ + X + 1

    ,即(1011),则CRC编码如何计算?

计算方法

  • 原始数据:

    1100

    ,左移3位,这里的

    3

    ,就是【生成多项式】最高次方,如

    ,最高为

    3

    ,左移3位后为:

    1100000

  • 注意,

    1100000

    虽然可以转换为十进制的96,多项式

    1011

    为11,但多项式除法不是96%11。
  • 多项式的计算方法,类似于【除法列式】计算流程,不过不需要【借位】,也就是不需要【借一当二】
CRC校验码计算:多项式除法-模2除法
  • 计算使用的好像是小学的列式的方法,当然,可以使用多项式计算的工具求出
  • 注意二进制的减法时,按为【异或】,不【借位】
  • 注意无法【整除】的情况,如

    10 / 1011

    ,结果为0,注意最高位都是1,才可以整除
  • 注意模2除法,

    1000 / 1011

    ,结果为

    11

    ,最高位为

    1

    就可以除,虽然二进制

    1000

    小于

    1011

  • 这里余数为3位,不足三位,最高位补个0即可。
  • 注意以上的

    1011

    1100000

    010

    ,均是二进制数据。

小结

  • 初步掌握了CRC校验的计算思路
  • 初步了解CRC校验位计算涉及到的【多项式除法】【模2除法】与传统【除法】的不同
  • 初步掌握手动计算简单的CRC校验位计算方法

继续阅读