❶ 求CRC校验计算方法
你这个是CRC16
要实现校验的话,你首先需要知道对方采用的是何种CRC公式
不同的CRC公式 得到的校验码是不一样的
在知道公式的情况下
做crc表,然后按照crc算法,计算这8个字节的整体crc
如果传输没有错误的话,最终的crc值是0
也可以计算前六个的crc,然后和最后两个字节比较,效果是相同的。
❷ 关于计算机网络的crc计算
我们知道,一台主机向另外一台主机发送报文的时候,需要一层层经过自己的协议栈进行数据封装,到达最后一层(四层协议的网络接口层)时需要在帧尾部添加FCS校验码(通过CRC算法得出)。当对端主机收到时,在接收端同样通过CRC算法进行验证,确认传输过程中是否出现错误。它只能确认一个帧是否存在比特差错,但没有提供解决措施。
循环冗余校验的原理
在发送端,先把数据划分为组(即:一帧)。假定每组 k 个比特。
在每组后面,添加供差错检测用的 n 位冗余码一起发送。即:实际发送长度为:k+n 比特。
发送前双方协商n+1位的除数P,方便接收方收到后校验。
给K比特的数据添加除数减一个0(P-1)作为被除数,与第三步确定的除数做“模2除法”。得出的余数即FCS校验序列,它的位数也必须是(P-1)。
将FCS校验序列添加至K个比特位的后面发送出去。
接收方对接收到的每一帧进行校验,若得出的余数 R = 0,则判定这个帧没有差错,就接受(accept)。若余数 R ≠ 0,则判定这个帧有差错,就丢弃。
对“模2除法”进行说明:
“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。相当于二进制中的逻辑异或运算。
计算示例
那么接收方拿到的就是:101001001。再以它为被除数,1101为除数进行“模2除法”。
❸ crc 计算机网络
2017年12月29日,星期五,
兄弟,我先给你简单再捋一遍CRC编码的概念和计算公式,原理明白了,以后不管碰到什么样的题,你都会迎刃而解了。
首先,需要知道如下几个概念,
CRC编码,就是你题目中所说的“待发字串”,它是经加工后带有CRC校验的待发送信息,
CRC校验码,就是你题目中所说的“CRC循环冗余码”,以下都简称为CRC校验码,它是通过CRC规则计算得来,
多项式,即真实信息,就是未经CRC编码规则处理的原始的信息,就是你题目中说的“已知信息码”,原始的真实信息有两种表现形式,以本题为例,
a、原始信息的 二进制字串(形式):1000100101,
b、原始信息的 多项式(形式):X^9+X^5+X^2+1,
X^9+X^5+X^2+1多项式,就是由原始信息的二进制形式1000100101得来的,多项式中每一个因数都对应二进制形式 1000100101 中值为1的那一位,X^9 X^5 X^2就是2^9+2^5+2^2,那表示二进制数的权位,
1000100101
1*2^90*2^80*2^70*2^6 1*2^5 0*2^4 0*2^3 1*2^2 0*2^11*2^0
2^0=1...2^9=1 000 000 000,凡是二进制字串中值为1的权位都出现在了多项式中,例如,二进制字串最高位(左1)的1,就是2^9,所以它出现在了多项式中,形状为X^9,而二进制数串中值为0的权位都没有出现在多项式中,可以数一下,二进制数串中有4个1,所以对应的多项式中有4个因子:X^9、X^5、X^2、1,其中多项式的最后一个因子1,其实就是X^0,而我们都知道,任何数的0次幂都是1(0除外),可以看出,这两种形式是等价的,即1000100101=X^9+X^5+X^2+1,当我们再遇到多项式时,就是去数原始信息(1000100101)中的1,然后把它的值为1的权位放到一起,写成式子(X^9+X^5+X^2+1),两者意义是一样的,从二进制形式能推导出多项式,也可以从多项式推导出二进制形式,
生成多项式,就是你题目中提到的“G(x)=X^5+X^4+X^2+1”,生成多项式也可以写成二进制形式,X^5+X^4+X^2+1其对应的二进制形式:110101,
通常,我们为了方便说明问题将生成多项式叫做:G(x),这里请注意,需要将
“生成多项式”和“多项式”进行区分,G(x)中的G就是generator polynomial,生成多项式的意思,
多项式:指的是原始信息1000100101中所有权位为1的权位写在一起的形式X^9+X^5+X^2+1
生成多项式:是人为指定的多项式,由编码人指定的东西,本例被人为指定成X^5+X^4+X^2+1即 110101 ,这个生成多项式是人为指定的,不是固定的,个人理解你指定成X^5+X^3+X^2+1也行,制定成X^5+X^4+X^3+X^2+1也行,
好了,接下来,我们要说最关键的CRC的定义和计算过程了,
CRC的定义:
多项式*2^(G(x)的最高次幂指数,你给的图片题目中G(x)的最高次幂指数是5)/G(x)=CRC校验码;
用文字表达,就是原始数据信息乘以,2的 【生成多项式中最高幂指数】 次幂,乘2的多少次幂,就是在右边加几个0,比如乘以2^2,就是在右边加2个零,因为是二进制数,所以乘几个2就是加几个零,和十进制数乘几个10就是加几个零道理一样,然后再去除以生成多项式,请注意,这里的除,不是数学中的除法,而是指计算机中的模二除运算,实际上就是逻辑异或运算,说白了,就是将除数和被除数高位,进行左对齐后,相同为0,不同为1,然后一直除下去,直到得到最后的余数为止,这个余数就是我们需要的CRC校验码,而且这个最后得到的余数,取几位由生成多项式中最高幂指数决定,最高幂指数是5就取5位,最高幂指数是6就取6位,最高幂指数是4就取4位,是根据生成多项式的最高次幂来定取几位的.本例中,最高次幂是5,所以,最后的余数是5位二进制数,
X^5+X^4+X^2+1写成二进制就是: 110101
你的图片题目中,G(x)=X^5+X^4+X^2+1,也就是生成多项式是110101,
结合本题,我们来做一遍,原始数据:1000100101,生成多项式:110101,根据上面的规则有,
1000100101*2^5=1000100101 00000
把原始值右边加上5个零:1000100101 00000之后,去除以生成多项式:110101
1000100101 00000
110101
----------------------------
0101110101 00000
左对齐,并开始按位异或,得0101110101 00000,
进行第二次除运算:
101110101 00000
110101
--------------------------
011011101 00000
左对齐,再按位异或,得到011011101 00000
开始第三次除运算:
11011101 00000
110101
--------------------
00001001 00000
左对齐,再按位异或,得到00001001 00000
进行第四次除运算:
100100000
110101
-----------------
010001000
左对齐,再异或,得到010001000
进行第五次除运算:
10001000
110101
------------
01011100
左对齐,再异或,得到01011100
进行第六次除运算:
1011100
110101
-------------
0110110
左对齐,再异或,得到0110110
进行第七次,最后一次除运算:
110110
110101
------------
000011
最终余数为000011,而由G(x)的最高次幂X^5的幂指数决定了,CRC校验码取5位,因此,最终得到的CRC校验码为:00011,
多项式*2^(G(x)的最高次幂指数,本例中G(x)的最高次幂指数是5)+G(x)=最终在物理线路上传送的CRC编码待发字串,
用文字表达就是,原始数据乘以,2的 【生成多项式中最高幂指数】 次幂,然后再加上生成多项式,最终得到要在线路中传送的CRC编码待发字串,
接着,以本例进行余下的计算,原始数据:1000100101,CRC校验码(CRC循环冗余码)为:00011,
根据上面的定义,有:
1000100101*2^5=1000100101 00000,
1000100101 00000
+ 00011
----------------------
100010010100011
所以最终的“待发字串”CRC编码为:100010010100011
❹ CRC校验是怎么算的
你这个是CRC16要实现校验的话,你首先需要知道对方采用的是何种CRC公式不同的CRC公式 得到的校验码是不一样的在知道公式的情况下做crc表,然后按照crc算法,计算这8个字节的整体crc如果传输没有错误的话,最终的crc值是0也可以计算前六个的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
如果你还是不懂,你就把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校验和,怎么计算
计算机网络原理的计算题(crc校验和数据传输问题)第1题:设要发送的二进制数据为10110011,若采用crc校验方法,生成多项式为x^4+x^3+1,度求出实际发送的二进制数字序列。(要求写出计算
计算机网络原理的计算题(crc校验和数据传输问题)
第1题:设要发送的二进制数据为10110011,若采用crc校验方法,生成多项式为x^4+x^3+1,度求出实际发送的二进制数字序列。(要求写出计算过程)
这是自考08年四月份的试题,我总是跟答案算的不一样。
答案是:待发送的序列m=10110011,除数p=11001,m*2^5与除数p进行模2除法运算,得余数r=1000,所以要发送的二进制序列为:101100111000
我不明白为什么m要乘以2的5次方,我是用101100110000除以11001得到的余数是100。
第2题:一条长度为100km的点对点链路,对于一个100字节的分组,带宽为多大时传播延迟等于发送延迟?(信道传输速度为2*10^8m/s)
答案是:
传播延迟为:100km/(2*10^8m/s)=50ms
发送延迟等于传播延迟时:100/c=50ms
则信道传输速率:c=200kbps
❽ 【计算机组成原理】如何计算CRC校验位
在crc计算时只用8个数据位,起始位及停止位,如有奇偶校验位也包括奇偶校验位,都不参与crc计算。crc计算方法是:1、
加载一值为0xffff的16位寄存器,此寄存器为crc寄存器。2、
把第一个8位二进制数据(即通讯信息帧的第一个字节)与16位的crc寄存器的相异或,异或的结果仍存放于该crc寄存器中。3、
把crc寄存器的内容右移一位,用0填补最高位,并检测移出位是0还是1。4、
如果移出位为零,则重复第三步(再次右移一位);如果移出位为1,crc寄存器与0xa001进行异或。5、
重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理。6、
重复步骤2和5,进行通讯信息帧下一个字节的处理。7、
将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位crc寄存器的高、低字节进行交换8、
最后得到的crc寄存器内容即为:crc校验码。
❾ CRC循环冗余码计算方法
CRC码一般在k位信息位之后拼接r位校验位生成。
例如:
假设使用的生成多项式是G(X)=X3+X+1。4位的原始报文为1010,求编码后的报文。
解:
1、将生成多项式G(X)=X3+X+1转换成对应的二进制除数1011。
2、此题生成多项式有4位(R+1)(注意:4位的生成多项式计算所得的校验码为3位,R为校验码位数),要把原始报文C(X)左移3(R)位变成1010 000
3、用生成多项式对应的二进制数对左移3位后的原始报文进行模2除(高位对齐),相当于按位异或得到的余位011,所以最终编码为:1010 011
注意事项
是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。
在发送方,利用生成多项式对信息多项式做模2除生成校验码。在接收方利用生成多项式对收到的编码多项式做模2除检测和确定错误位置。
应满足以下条件:
1、生成多项式的最高位和最低位必须为1。
2、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0。
3、不同位发生错误时,应该使余数不同。
4、对余数继续做除,应使余数循环。