在crc的多项式表达方法中,若多项式为M(x)=x5+x4+x+1.则多项式二进制数为?

6183℃ LYNDA

在crc的多项式表达方法中,若多项式为M(x)=x5+x4+x+1.则多项式二进制数为?

计算传输信息1010011001的CRC编码,假设其生成多项式为G(X)=X5+X4+X2+1

计算传输信息1010011001的CRC编码,假设其生成多项式为G(X)=X5+X4+X2+1

crc生成多项式应怎么定

循环冗余校验码(CRC)

循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。

校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2R除以生成多项式G(x)得到的余数就是校验码。

几个基本概念

1、多项式与二进制数码

多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。

多项式包括生成多项式G(x)和信息多项式C(x)。

如生成多项式为G(x)=x4+x3+x+1, 可转换为二进制数码11011。

而发送信息位 1111,可转换为数据多项式为C(x)=x3+x2+x+1。

2、生成多项式

是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。

在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。

应满足以下条件:

a、生成多项式的最高位和最低位必须为1。

b、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做模2除后应该使余数不为0。

c、不同位发生错误时,应该使余数不同。

d、对余数继续做模2除,应使余数循环。

将这些要求反映为数学关系是比较复杂的。但可以从有关资料查到常用的对应于不同码制的生成多项式如图9所示:

N K 码距d G(x)多项式 G(x)

7 4 3 x3+x+1 1011

7 4 3 x3+x2+1 1101

7 3 4 x4+x3+x2+1 11101

7 3 4 x4+x2+x+1 10111

15 11 3 x4+x+1 10011

15 7 5 x8+x7+x6+x4+1 111010001

31 26 3 x5+x2+1 100101

31 21 5 x10+x9+x8+x6+x5+x3+1 11101101001

63 57 3 x6+x+1 1000011

63 51 5 x12+x10+x5+x4+x2+1 1010000110101

1041 1024   x16+x15+x2+1 11000000000000101

图9 常用的生成多项式

3、模2除(按位除)

模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位。所以实际上就是异或。然后再移位移位做下一位的模2减。步骤如下:

a、用除数对被除数最高几位做模2减,没有借位。

b、除数右移一位,若余数最高位为1,商为1,并对余数做模2减。若余数最高位为0,商为0,除数继续右移一位。

c、一直做到余数的位数小于除数时,该余数就是最终余数。

CRC校验是怎么算的

1、循环校验码(CRC码):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。

2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。

3、CRC码集选择的原则:若设码字长度为N,信息字段为K位,校验字段为R位(N=K+R),则对于CRC码集中的任一码字,存在且仅存在一个R次多项式g(x),使得

V(x)=A(x)g(x)=xRm(x)+r(x);

其中: m(x)为K次信息多项式, r(x)为R-1次校验多项式,

g(x)称为生成多项式:

g(x)=g0+g1x+ g2x2+...+g(R-1)x(R-1)+gRxR

发送方通过指定的g(x)产生CRC码字,接收方则通过该g(x)来验证收到的CRC码字。

标准CRC生成多项式如下表:

名称 生成多项式 简记式* 标准引用

CRC-4 x4+x+1 3 ITU G.704

CRC-8 x8+x5+x4+1 0x31

CRC-8 x8+x2+x1+1 0x07

CRC-8 x8+x6+x4+x3+x2+x1 0x5E

CRC-12 x12+x11+x3+x+1 80F

CRC-16 x16+x15+x2+1 8005 IBM SDLC

CRC16-CCITT x16+x12+x5+1 1021 ISO HDLC, ITU X.25, V.34/V.41/V.42, PPP-FCS

CRC-32 x32+x26+x23+...+x2+x+1 04C11DB7 ZIP, RAR, IEEE 802 LAN/FDDI, IEEE 1394, PPP-FCS

CRC-32c x32+x28+x27+...+x8+x6+1 1EDC6F41 SCTP

基本算法(人工笔算):

以CRC16-CCITT为例进行说明,CRC校验码为16位,生成多项式17位。假如数据流为4字节:BYTE[3]、BYTE[2]、BYTE[1]、BYTE[0];

数据流左移16位,相当于扩大256×256倍,再除以生成多项式0x11021,做不借位的除法运算(相当于按位异或),所得的余数就是CRC校验码。

发送时的数据流为6字节:BYTE[3]、BYTE[2]、BYTE[1]、BYTE[0]、CRC[1]、CRC[0];

举例:

信息字段代码为: m(x)=x6+x4+x3+1 代码为:1011001

生成多项式: g(x)=x4+x3+1 代码为:11001

m(x)x4=x10+x8+x7+x4 对应的代码记为:10110010000 即 左移4位

m(x)x4 在与 g(x)进行 模2的除法运算,相当于按位异或,计算过程如下:

1 0 1 1 0 0 1 0 0 0 0

1 1 0 0 1

-----------------------------

0 1 1 1 1 0 1 0 0 0 0

1 1 0 0 1

-----------------------------

0 0 0 1 1 1 1 0 0 0 0

1 1 0 0 1

-----------------------------

0 0 1 1 1 0 0 0

1 1 0 0 1

-----------------------------

0 0 1 0 1 0 --------------> 余数 即 校验码

crc码计算

当前信息码字为1011001,生成11001,(即多项式G(X)=X^4+X^3+1) 实际传送的信息码为?

步骤:

1、看多项式多少阶 就是X最大的那个次方(这里是4)

2、如果是n阶,就在原来的信息码字后面加上n个0得到字串A

题目上就是10110010000

3、用多项式的系数对应生成字串B

题目中多项式G(X)=X^4+X^3+1

带系数x写法 G(X)=1* X^4+1* X^3+0*X^2+0*X^1+1*X^0

所以B就是11001

4、 按模2除法用A除以B(模2 除法就是加减都是异或运算)得到的余数就是crc的校验码

题目中算出余数就是1010

5、实际传送的信息就是原来的信息码+上校验码

答案是10110011010

TAG: 多项式 方法