Ⅰ 关于循环冗余检验运算中除数的问题
假设使用的生成多项式是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,而且不同位出错,其余数也不同。可以证明,余数与出错位的对应关系只与码制及生成多项式有关,而与信息位无关
Ⅱ 关于计算机网络的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生成的多项式P(X)。除数的位数是P(X)最高次幂+1。P(X)每个幂数代表着除数从右到左第几位为1,其余的都为0,就得出除数了。比如P(X)=X^4+X^3+1,则除数个数为5,从右往左分别为0 1 2 3 4位,其中4,3,0位为1,其余为0。除数为11001
Ⅳ 计算冗余码
FJNU.1240Description
计算机网络中采用循环冗余码来校验数据的正确性。其原理是:发送方计算出待发送的二进制数据的循环冗余码,并随同原数据一起发送到接收方;接收方通过重新计算接收到的数据的循环冗余码,并和收到的循环冗余码进行比较,如果两者相同则可判定所收到的数据是正确的,否则说明数据是错误的。其中计算二进制数据的循环冗余码的计算过程如下:
>>协议事先约定一个二进制生成表达式,本题设为10011;
>>将待发送的二进制数据串的末尾加4个0;
>>将补上0的数据串按模2除法除于生成表达式,取余数;
>>该余数就是该二进制数据串的循环冗余码。
例如:
数据串为:1101011011
生成表达式为:10011
循环冗余码为1110
计算过程如下:
根据上述的计算方法,请编写一个循环冗余码计算程序,假设二进制数据串的长度不超过20位,生成表达式固定为10011。
Input
输入的第一行含一个正整数k (1<=k<=10),表示测试例的个数。后面紧接着k行,每行对应一个测试例,含一个N位二进制串(1<=N<=20),代表数据。
Output
每个测试例对应一行输出,含一个5位二进制串,表示循环冗余码。
Sample Input
2
1101011011
10101010
Sample Output
01110
01001
Source
福建师范大学第三届程序设计比赛网上预赛
My Program
┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄它是华丽的分隔线
【题意简述】
对于输入的二进制数,在末尾加上4个0后用10011对其进行模2除法。并输出最后的结果(5位二进制码)。
【粗略分析】
由于C++中没有二进制的数据类型,因此采用字符串记录。
观察运算图可知,每次都取前5位对它进行模2除法。我们可以设定一个i = 0 to n-5,用来计算每一步。
我们还可以观察出,每次只有第i位为1时才会进行运算。所以我们加一个判定m[j]=='1'时才计算。
因为固定除数都为10011,我们直接将它列为数组,i=1 to 5 进行模2并存储回字符数组即可。
【C++源代码】
简单地模拟一下计算过程就可以了。
Ⅳ 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、对余数继续做除,应使余数循环。
Ⅵ crc校验中的除数是怎么确定的啊
首先要知道CRC生成的多项式P(X)。除数的位数是P(X)最高次幂+1,从右往左分别为第0位1位2位3位4位...P(X)每个幂数代表着除数从右到左第几位为1,其余的都为0,比如P(X)=X^3+1就是第3位和第0位为1,其余是0
这样就得出除数了
Ⅶ 循环冗余校验码怎么算
循环冗余校验码的计算方法:
编码原理:
现假设有:有效信息:M;
除数G(生成多项式)有:M/G=Q+R/G;
此时,可选择R作为校验位,则MR即为校验码。
校验原理:(M-R)/G=Q+0/G
说明:以接收到的校验码除以约定的除数,若余数为0,则可认为接收到的数据是正确的。
例:有效信息1101,生成多项式样1011
循环校验码解:
有效信息1101(k=4),即M(x)=x3+x2+x0,生成多项式1011(r+1=4,即r=3);
即G(x)=x3+x1+x0,M(x)·x3=x6+x5+x3,即1101000(对1101左移三位);
M(x)·x3/G(x)=1101000/1011=1111+001/1011即1010的CRC是:1101001。
计算图文如下:
Ⅷ 关于计算机网络循环冗余码怎么求求大神。、、
解出的R=0101(fcs)
输出2^nM+fas=1001110111010101
唔感觉是这样的
Ⅸ 如何求冗余码
二进制数据的循环冗余码的计算过程如下:
1.协议事先约定一个二进制生成表达式,本题设为110011;
2.将待发送的二进制数据串的末尾加5个0;
3.将补上0的数据串按模2除法除于生成表达式,取余数;
4.该余数就是该二进制数据串的循环冗余码。
生成多项式: G(x)=x5+x4+x+1 (r=5) ,生成码: 110011
数据10101100 00000
由计算结果知冗余码是0101,码字就是1100101。
********************************1 1 0 0 0 1 0 0
G(x)→1 1 0 0 1 1 ) 1 0 1 0 1 1 0 0 0 0 0 0 0←F(X)*Xr
**********************1 1 0 0 1 1 // G(x)
************************1 1 0 0 0 0 //补位
************************1 1 0 0 1 1 // G(x)
**************************0 0 0 1 1 0 0 0 0 //补位
*********************************1 1 0 0 1 1 // G(x)
***********************************0 0 0 1 1 0 0
循环冗余码:0 1 1 0 0
模2:
1-0 = 1
0-1 = 1
1-1 = 0
0-0 = 0
某循环冗余码的生成多项式为G(x)=x5+x4+x+1,则它对任意长度的信息位产生__5___位长的冗余位,//因为最高位为x5
并可检测出所有突发长度___小于等于5__位的突发错误。 //因为冗余位长度为5
若信息位为10101100,采用此生成多项式产生冗余位,加在信息位后形成的码字是__C___.在读出或接收端读到的码字中若不满足某种规律则可判断其必然有错,例如:__D___ 和___E__就是出错的码字。
C的答案见上面的计算,
D___ 和___E使用上面的方法计算出循环冗余码,循环冗余码不是0 1 1 0 0就是出错的码字
Ⅹ 计算机网络,关于数据链路层差错检测的【循环冗余算法】
P应是由循环冗余算法规则算出来的,太久了,具体细节你再翻翻书。