2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。
例如:
1010111对应的多项式为x^6+x^4+x^2+x+1
而
多项式为x^5+x^3+x^2+x+1对应的代码101111
3、二进制位串如何对应多项式
例如:
1010111
首先,位串的长度为7,那么,多项式最高次幂为7-1=6,也就是x^6
1 0 1 0 1 1 1 x^6 x^4 x^2 x^1 1
从上面,得出二进制位串对应的多项式
x^6+x^4+x^2+x+1
4、将信息码左移R位,相当于对应的信息多项式C(x)*x的R次方。
前提:
假设信息码(原文报文、发送信息位)为1010,生成多项式是G(x)=x^3+x+1。
R是指生成多项式最高次幂,也是校验码的位数。
所以,1010向左移3位,变成1010 000。
二进制1010 000 对应的信息多项式为x^6+x^4。(参考3)
说明:
假设信息码为1010。
二进制1010 对应的信息多项式为x^3+x。
1010向左移3位,变成1010 000
根据前提知道,1010 000对应的信息多项式为x^6+x^4。也就是(x^3+x)*x^3。
5、假设使用的生成多项式是G(x)=x^3+x+1。4位的原始报文为1010,求编码后的报文。
第一,生成多项式转换成相应的二进制
x^3+x+1相应的二进制位1011(标记为A)
第二步,原始报文向左移R位,也就是C(x)*x的R次方。
1010 000
第三步,得到向左移R位的二进制(标记为B)后,进行模2除(高位对齐),相当于按位异或。即相同为0,不同为1。得到R为余数。
1010 000 1011 --------- 0001 000 1 011 --------- 0000 011
得到011余数,也就是校验码
第四步,将余数拼到原始报文后面,就得到完整的CRC码,也就是发送码
1010 011
6、接收方如何校验
利用发送信息码对g(x)二进制做除。如果能除掉,也就是余数为0,则正确。(高位对齐)
如:
1010 011 1011 ---------- 0001 011 1 011 ---------- 0000 000
7、常见CRC码
名称 生成多项式 简记式* 应用举例 CRC-16 x16+x15+x2+1 8005 IBM SDLC