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