【校验码
水善利万物而不争,处众人之所恶,故几于道💦
目录
循环冗余校验码
1.多项式
2.CRC编码的组成
3.校验码的生成
4.例题:
循环冗余校验码
广泛地在网络通信及磁盘存储时采用。
1.多项式
在循环冗余校验(CRC)码中,无一例外地要提到多项式的概念。一个二进制数可以以一个多项式来表示。如1011表示为多项式X
3+X
1+X
0,如果把这里的x替换为2,这个多项式的值就是该数的值。从这个转换可以看出多项式最高幂次为R则转换为二进制数有R+1位。
2.CRC编码的组成
CRC编码的组成是由K位信息码,加上R位的校验码。
3.校验码的生成
校验码的生成步骤如下:
(1) 将K位数据C(x)左移R位,给校验位留下空间,得到移位后的多项式为C(x)×XR(×这个不是乘号,代表连接)。
(2) 将移位后的信息多项式除以生成多项式所对应的二进制数(也就是和生成多项式进行模2运算-异或),得到R位的余数多项式。
(3) 将余数作为校验码嵌入信息位左移后的空间。
4.例题:
信息位为 1010 0110,生成多项式为:a(x)=X5+X4+X+1,则CRC码为:
解题步骤:
①将信息码左移R位,R是生成多项式的最高次幂。
②将最高次幂为R的生成多项式G(X)转换为R+1位的二进制数
③将移位后的信息码除以②中生成的二进制数(这里的除是进行异或运算),得到R位的余数
④将余数作为校验码拼接到信息码左移后空出的位置,得出完整的CRC码
答:
①生成多项式的最高次幂是5,所以将信息码左移5位:
1010 0110 0000 0
②将生成多项式转换为5+1位二进制数为:
110011
③进行异或运算:
1010 0110 0000 0
1100 11
-----------------------------
0110 10 <----第一次运算结果
110 1010 0000 0 <----补全结果,剩余位从上面拉下来
110 011
-----------------------------
000 1100 0000 0 <----第二次运算结果
1100 11
-----------------------------
11000 <----第三次运算结果
可以看出已经得到了5位余数,11000
④拼接,得出完整的CRC码:
1010 0110 11000