Ⅰ 请教一道CRC循环冗余检验码的计算题
crc用的是二进制除法,不能化为十进制做,相减时1-1=0,0-0=0,1-0=1,0-1=1不要借位
1110001100000/110011=10110110*110011+11010,所以11010是校验码。在重申一遍,把它看成小学时学的除法(就是除号写得像“厂”一样的方法,相减时用二进制加法(就是不带进位的那种)不可以化为十进制做)
算了还是做给你看吧。
------------10110110
---------------------
110011/1110001100000
-------110011
------------------
---------101111
---------110011
------------------
----------111000
----------110011
------------------
------------101100
------------110011
------------------------
-------------111110
-------------110011
-------------------------
---------------11010
所以答案是11010
解出的R=0101(fcs)
输出2^nM+fas=1001110111010101
唔感觉是这样的
Ⅲ 冗余码的计算商怎么求
冗余码的计算商方法如下。
在《计算机网络》这门课程中,对于循环冗余码CRC的计算需要用到模2除法。
模2除法的原则:
1.被除数的首位为1,则商为1;
2.被除数的首位为0,则商为0;
模2除法等同于按位异或,要保证每次除完首位都为0,才能右移;
计算时每次右移一位,当被除数的位数小于除数,其为除数。
Ⅳ 计算机网络,关于数据链路层差错检测的【循环冗余算法】
P应是由循环冗余算法规则算出来的,太久了,具体细节你再翻翻书。
Ⅳ 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、对余数继续做除,应使余数循环。
Ⅵ 已知信息码110011,生成多项式G(X)=X4+X3+1.求循环冗余码和码字
答:已知K(X) = X 5 + X 4+ X + 1,G(X) = X 4 + X 3 + 1
由此可知 r = 4,冗余码位数为4
R(X) = K(X) * X r / G(X)
=(X 5 + X 4 + X + 1)* X4 /(X 4 + X 3+ 1)
=(X 9 + X 8 + X 5+ X 4)/(X 4+ X 3 + 1)
通过二进制除法计算得知:冗余码为1001,R(X) = X 3 + 1。
T(X) = K(X) * X r + R(X)
= X 9 + X 8+ X 5 + X 4 + X 3 + 1
因此要发送的码字为1100111001。
Ⅶ 计算冗余码
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++源代码】
简单地模拟一下计算过程就可以了。
Ⅷ 循环冗余校验码怎么算
循环冗余校验码的计算方法:
编码原理:
现假设有:有效信息: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。
计算图文如下: