crc编码在线计算(crc码计算方法)

crc校验码计算方法

已知信息位为1100,生成多项式G(x) = x3+x+1,求CRC码。

M(x) = 1100 M(x)*x3 = 1100000 G(x) = 1011

M(x)*x3 / G(x) = 1110 + 010 /1011 R(x) = 010

CRC码为: M(x)*x 3+R(x)=1100000+010 =1100010

其原理是:CRC码一般在k位信息位之后拼接r位校验位生成。编码步骤如下:

(1)将待编码的k位信息表示成多项式 M(x)。

(2)将 M(x)左移 r 位,得到 M(x)*xr 。

(3)用r+1位的生成多项式G(x)去除M(x)*xr 得到余数R(x)。

(4)将M(x)*xr 与R(x)作模2加,得到CRC码。

CRC校验码计算详解:采用CRC进行差错检验,生成多项式为G(X)=X4+X+1,信息码字为10110,则计算出的CRC校验码是:A. 0000 B. 0100 C. 0010 D.1111

符号表示假定:多项式和多项式的系数排列均用相同的符号表示,如

G(X)= X4+X+1

G(X)=10011

已知条件如下:

原码字记做M(X),即:M(X) = 10110

生成多项式记做G(X),即:G(X) = 10011

G(X)的最高阶数记做r,此处r = 4

CRC校验码计算

101011010101后加5个0然后除110101,得出110111111001余数为1101,不足五位,添满五位成为01101

于是含有crc校验码的实际发送数据的比特序列为10101101010101101

CRC计算方法

你应该看到了我的那个回答啊,很简单的,只是刚开始理解有点难,懂了就会了,你用的教材是谢希仁的吗,那个讲的比较透彻?还是以那个例子回答哦

已知信息位为1100(知道数据比特序列),生成多项式G(x)

=

x3+x+1,求CRC码。

M(x)

=

1100

M(x)*x3

=

1100000

G(x)

=

1011

M(x)*x3

/

G(x)

=

1110

+

010

/1011

R(x)

=

010

CRC码为:

M(x)*x

3+R(x)=1100000+010

=1100010

如果你还是不懂,你就把1100按模二除法除以G(x)就可以了,这里就是1100/1011,得到的余数就是CRC码

其原理是:CRC码一般在k位信息位之后拼接r位校验位生成。编码步骤如下:

(1)将待编码的k位信息表示成多项式

M(x)。

(2)将

M(x)左移

r

位,得到

M(x)*xr

(3)用r+1位的生成多项式G(x)去除M(x)*xr

得到余数R(x)。

(4)将M(x)*xr

与R(x)作模2加,得到CRC码。

这个CRC编码怎么算啊

2018年01月07日,星期日,

不好意思,今天刚看到,

我先大概说一下CRC相关概念,然后咱们开始解题,

1、多项式形式与二进制形式是有关联的,因子是对应的,

比如,题中,发送多项式为:X^11+X^8+X^7+X^6+X^4+X^3+X^2+1,

就是:2^11+2^8+2^7+2^6+2^4+2^3+2^2+1,

所以,对应的二进制形式为:100111011101,

这里的发送多项式说的就是,未经CRC校验运算的原始数据,

2、同理,CRC生成多项式也与一组二进制数相对应,

例如,题中,CRC生成多项式为:x^4+x^2+x^1+1,

就是:2^4+2^2+2^1+1,

对应的二进制是:10111,

生成多项式是人为指定的,没有固定值,指定成x^4+x^3+x^2+x^1+1即11111也行,

3、发送多项式的二进制形式是:100111011101,这是我们的原始数据,

CRC生成多项式的二进制形式是:10111,我们要使用它来按照CRC规则与原始数据进行运算后,得出我们要在线路上传输的,经过CRC校验的,原始数据的CRC编码,

这里比较绕,简单点理解就是,我们要通过给出的CRC生成多项式,用它与原始数据进行计算后,得到的带有CRC校验的一串二进制数,我们把这串带有CRC校验的二进制就称为原始数据的CRC编码,就是题目中的“该发送多项式的CRC编码”,

4、接下来就是CRC计算规则了,

发送多项式的二进制形式,向左移动(CRC生成多项式最高次幂的指数)这么些位,本题CRC生成多项式最高次幂是X^4,因此,发送多项式要左移4位,

计算如下:

100111011101 *  2^4

=100111011101 0000,

这样经过计算后,原始数据的右侧多出了4个0,也就是多出了4个空位,在将来通过计算得出的CRC校验码就要放到这4个空位中,4位的CRC校验码就要填充到这挪出的4个车位,

按CRC规则,使用变形后的发送多项式的二进制形式:1001110111010000去除以CRC生成多项式的二进制形式:10111,

请注意,这里使用的除法,不是数学领域的除法,而是指计算机中的模二除的计算方式,实际上就是异或运算,实际的操作方法是,将两个数高位对齐也就是左对齐,然后按位异或,若相同则结果为0,若不同则结果为1,然后将得到的数再与除数(就是生成多项式)相除,直到最后得到最终的余数,一般来说,我们按照CRC校验规则经过运算,一般是除不尽的,这个余数就是我们需要的CRC校验码,将这个CRC校验码按照CRC规则与变形后(也就是右边加了4个零的原始数据)的原始数据组合到一起就是最终的答案,

计算步骤如下:

1001110111010000/10111

…………………………………………

1001110111010000                      被除数   ,变形后的原始数据,

10111                                            除数       ,CRC生成多项式

—————————

0010010111010000                      商,下一步继续除以CRC生成多项式:10111

…………………………………………

10010111010000                          被除数,就是上一步运算得到的,商,

10111                                            除数

————————

00101111010000                           商,下一步继续除以CRC生成多项式:10111

……………………………………………

101111010000                               被除数,即上一步得到的商

10111                                             除数

———————

000001010000                               商

………………………………………………

1010000                                           被除数

10111                                               除数

———

0001100                                            余数(也是最后一步运算得到的商,因为位数不足5位不能再继续除了,4位 的1100不能再与5位的CRC生成多项式 10111,进行模二除的运算了,所以就把这个商称为余数了,)

按照CRC校验运算规则,将经过上一步运算后得到的CRC校验码:1100,与变形后的原始数据:1001110111010000,组合到一起,就是我们最终需要的,在线路上传送的,带有CRC校验码的,CRC编码,也就是题目中说的,该发送多项式的CRC编码,

计算过程如下:

1001110111010000+1100

………………………………………………

100111011101  0000

+                     1100

——————————

100111011101  1100

这里需要说明的是,只有理解了CRC编码的规则,才能在将来遇到此类问题时从容应对,我给你的建议是,多做题,最好是有正确答案的题目,这样在做题的过程中,会加深你对CRC编码的理解,

最后,我们再来复习一下,CRC编码的规则,

1、原始数据多项式,我们一般称为:C(X),也有称为m(x)的,

2、生成多项式 generator polynomial,我们一般称为:G(x)。

3、CRC校验码,我们一般称为: r(x),

4、我们,先用变形后的C(X),去除以G(x),得到r(x),然后,再将变形后的C(X),与r(x)组合,就得到了最终我们需要的带CRC校验的CRC编码。

这里想再说一下,为什么生成多项式的最高次幂是几,最后的余数就是几位的,

比如本例中,生成多项式为:x^4+x^2+x^1+1,最后的余数就是4位的1100,

这个规则是可以推导出来的,

首先,将生成多项式中的 1 改写成 x^0,则有 x^4+x^2+x^1+x^0,

这就很明显可以看出来,指数是从0开始的,虽然中间有一个指数3因为该权位上的值为0而没有写在这个生成多项式中,但是在该生成多项式的二进制形式中该权位上是数字0,这不是重点,

重点是,我们可以一目了然的看出来,指数是从0开始的,而不是从1开始的,所以,以本题为例,当生成多项式的最高次幂为x^4即指数为4时,该幂所在的权位的右侧一定有4位二进制数,因为该幂的权位决定了这个生成多项式一定是一个5位的二进制数,而最高幂所在的权位是右数第五个位置,所以它的右边一定还有4个二进制位,

结合开头描述的,要让原始值去乘,2的,生成多项式的最高次幂这么多次方,也就是让原始值向左移动多少位,好腾出地方放置余数,

还有一个很巧妙的地方是,因为生成多项式的二进制形式中,最高位一定是1,所以,和加了0的原始值进行异或运算,到最后得到的余数的位数一定比生成多项式的二进制形式的位数小,拿本例来说,生成多项式是:

x^4+x^2+x^1+1

对应的二进制形式是:

10111

所以,不管原值最后剩下什么组合,只要和 10111左对齐后,因为要进行异或的操作,最高位一定变0,所以,最后的余数的二进制位数一定小于生成多项式的二进制位数,

再结合,指数从0开始,

所以,生成多项式的最高次幂,可以决定余数的位数,

CRC码的计算方法

信息码添四个零,去除多项式,得到余数,为****

那么传送的12个比特就是11001101****。

Computer Networks 自顶向下方法书里有!

crc校验码计算方法是什么?

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

2、生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。

例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。

注意事项

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

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

应满足以下条件:

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

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

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

4、对余数继续做除,应使余数循环。

0

评论0