定义循环冗馀校验码(Cyclic Redundancy Chec,CRC )是用多项式模式2除法将数名校验码加到信息码上,从而增加整个编码系统的编码距离和纠错能力,被广泛应用于移动通信和磁盘数据存储。
原理CRC的基本原理是在k位信息码之后添加r位的校验码,由于整个码长为n位,所以该码也被称为“n,k”码。 对于给定的(n,k )码,可以证明存在N-K=R的最高次幂的多项式g ) x )。 g ) x )可以生成r比特的校验数字,g(x )被称为这个CRC码的生成多项式。
校验码的具体生成过程是,将发送信息用信息多项式c(x )表示,如果将c ) x )向左偏移r比特,则能够表现为如c ) x )2R那样在c ) x )的右边空出r比特的位置。 c(x ) 2r除以生成多项式g ) x所得的馀数为校验码。
生成CRC代码的步骤如下:
(1)将x的最高次为r的生成多项式g ) x )变换为对应的R 1比特的二进制数。
)2)将信息码左移r位,相当于对应的信息多项式c(x )2R。
)3)用生成多项式(二进制)将信息代码除以模数2,得到r位的馀数。
)4)将余数向左偏移报文编码,拼写在空位置,得到完整的CRC编码。
样本CRC生成多项式为g(x )=X4 X3 1,求二进制序列10110011的CRC校验码。
1、多项式转换为R 1二进制。
在g(x )=x431时,由于缺少x的二次侧和一次侧,所以为0,其他为1,结果为11001
2、信息码左移r位
上面得到的多项式位数为5,R=4,将消息代码10110011向左偏移4位,如下所示:
101100110000
3、用多项式二进制11001将信息代码101100110000除以型2
清淡月饼: 100,不到r位,前补0,所以清淡月饼0100
4、将余数移动到短信码的左边,连接到空闲的位置
结果是101100110100
类型2除法类型2除法的关键:
1、除数和被除数的对应位置进行异或运算得到馀数。
2、如果不能被整除,如果馀数小于R 1,则商为0,否则商为1,直到馀数充分达到R 1
考虑一下上述例子。
11010100
11001/101100110000
11001
11110
11001
11111
11001
11000
11001
0100