循环冗余校验码(CyclicRedundancyCheck,CRC)是数据通信领域中最常用的一种差错校验码,该校验方法中,使用多项式除法(模2除法)运算后的余数为校验字段。若数据信息为n位,则将其左移k位后,被长度为k+1位的生成多项式相除,所得的k位余数即构成k个校验位,构成n+k位编码。
温馨提示:
生成多项式要求:
A、生成多项式的最高位和最低位必须为1。
B、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0。
C、不同位发生错误时,应该使余数不同。
D、对余数继续做模2除,应使余数循环。
多项式01对应方式为此位数是否有X方数字存在,以X3+X+1
试题1:若数据信息为,生成多项式为x3+x+1(即),则CRC编码是(13)。
(13)A.B.C.011D.110
编码流程为:
1、在原始信息位后加k个,即。
2、将与生成多项式做模2除法(等同于没有借位的减法,或者没有进位的加法),得到余数为。
计算过程如下:
3、将原始信息位与余数连接起来得到:。软考教材请参考《网络规划设计师教程》P45计算CRC的过程。
试题2:年上半年系统分析师考试上午真题试题14
若计算机采用CRC进行差错校验,生成多项式为G(x)=x4+x+1,信息字为0,则CRC校验码是(14)。
(14)A.0B.0C.0D.
试题分析
CRC即循环冗余校验码(CyclicRedundancyCheck)是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。
在CRC校验方法中,进行多项式除法(模2除法)运算后的余数为校验字段。
信息字为0,对应的多项式,生成多项式为,对应的代码为。
校验码计算过程为:先将信息码左移4位(生成码长-1),得到10,然后反复进行异或运算(即除数和被除数最高位对齐,按位异或),如下所示:
011=01,01左移两位得到10再与异域
1011=,左移两位得到1再与异域
1=0,其结果为CRC校验码,即余数。
年上半年系统分析师考试上午真题试题13已经将CRC的计算过程明确,再贴一次本题的计算过程(软考教材请参考《网络规划设计师教程》P45计算CRC的过程):