问题
- 循环冗余校验码(Cyclic Redundancy Check,CRC)是数据通信领域中最常用的一种差错校验码,该校验方法中,使用【多项式除法】,也就是【模2除法】运算后的余数为校验字段。
- 如数据信息为
位,则将其左移n
位后,被长度为k
位的【生成多项式】相除,所得的k+1
位余数即构成k
个校验位,构成k
位编码。n+k
- 若数据信息为
,生成多项式为1100
,即(1011),则CRC编码如何计算?X³ + X + 1
计算方法
- 原始数据:
,左移3位,这里的1100
,就是【生成多项式】最高次方,如3
,最高为X³
,左移3位后为:3
1100000
- 注意,
虽然可以转换为十进制的96,多项式1100000
为11,但多项式除法不是96%11。1011
- 多项式的计算方法,类似于【除法列式】计算流程,不过不需要【借位】,也就是不需要【借一当二】
- 计算使用的好像是小学的列式的方法,当然,可以使用多项式计算的工具求出
- 注意二进制的减法时,按为【异或】,不【借位】
- 注意无法【整除】的情况,如
,结果为0,注意最高位都是1,才可以整除10 / 1011
- 注意模2除法,
,结果为1000 / 1011
,最高位为11
就可以除,虽然二进制1
小于1000
1011
- 这里余数为3位,不足三位,最高位补个0即可。
- 注意以上的
1011
1100000
,均是二进制数据。010
小结
- 初步掌握了CRC校验的计算思路
- 初步了解CRC校验位计算涉及到的【多项式除法】【模2除法】与传统【除法】的不同
- 初步掌握手动计算简单的CRC校验位计算方法