问题补充:
CRC循环冗余校验码的计算CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码.它的编码规则是:1、首先将原信息码(kbit)左移r位(k+r=n)2、运用一个生成多项式g(x)(也可看成二进制数)用模2除上面的式子,得到的余数就是校验码.第一个规则我我明白 但是第二个的生成多项式的就不明白了1.将什么放入多项式中计算?是不是信息码?多项式的计算规则是怎么样的?是不是就是移位 X3就是左移3位 最后按加号相加?最好能够讲解这个列子例如:g(x)=x4+x3+x2+1,(7,3)码,信息码110产生的CRC码就是:1111101 | 110,0000111 011 01001 11011001余数是1001,所以CRC码是110,1001 数学
答案:
【答案】 假设使用的生成多项式是G(x)=x3+x+1.4位的原始报文为1010,求编码后的报文.
1、将生成多项式G(x)=x3+x+1转换成对应的二进制除数1011.
2、此题生成多项式有4位(R+1),要把原始报文C(x)左移3(R)位变成101,000,0
3、用生成多项式对应的二进制数对左移4位后的原始报文进行模2除:
1001--商
1010000
1011--除数
1000
1011
011--余数(校验位)
编码后的报文(CRC码):
1010000
+ 011
101,001,1
例如:g(x)=x4+x3+x2+1,(7,3)码,信息码110产生的CRC码就是:
101
11101 | 110,0000(就是110,0000/11101)
111 01
1 0100
1 1101
1001
余数是1001,所以CRC码是110,1001
CRC的和纠错
在接收端收到了CRC码后用生成多项式为G(x)去做模2除,若得到余数为0,则码字无误.若如果有一位出错,则余数不为0,而且不同位出错,其余数也不同.可以证明,余数与出错位的对应关系只与码制及生成多项式有关,而与信息位无关