精华内容
下载资源
问答
  • (17)采用CRC进行差错校验,生成多项式为G(X)=X4+X+1,信息码字为10111,则...CRC(Cyclic Redundancy Check)循环冗余校验码 是常用的校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠(不可靠性的来...
    (17)采用CRC进行差错校验,生成多项式为G(X)=X4+X+1,信息码字为10111,则计算出的CRC校验码是  (17)  。
    A.0000  B.0100   C.0010   D.1100
    试题解析: 
    
    
    2011年05月16日 - kelly - 天使的翅膀
     

    答案:(17)D
    CRC(Cyclic Redundancy Check)循环冗余校验码    是常用的校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠(不可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带来‘确认信息’的困惑,书上提到红军和蓝军通信联合进攻山下的敌军的例子,第一天红军发了条信息要蓝军第二天一起进攻,蓝军收到之后,发一条确认信息,但是蓝军担心的是‘确认信息’如果也不可靠而没有成功到达红军那里,那自己不是很危险?于是红军再发一条‘对确认的确认信息’,但同样的问题还是不能解决,红军仍然不敢冒然行动。      对通信的可靠性检查就需要‘校验’,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。      CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码。 它的编码规则是:    1、首先将原信息码(kbit)左移r位(k+r=n)    2、运用一个生成多项式g(x)(也可看成二进制数)用模2除上面的式子,得到的余数就是校验码。      非常简单,要说明的:模2除就是在除的过程中用模2加,模2加实际上就是我们熟悉的异或运算,就是加法不考虑进位,公式是:    0+0=1+1=0,1+0=0+1=1  即‘异’则真,‘非异’则假。    由此得到定理:a+b+b=a 也就是‘模2减’和‘模2加’直值表完全相同。      有了加减法就可以用来定义模2除法,于是就可以用生成多项式g(x)生成CRC校验码。    例如: g(x)=x4+x3+x2+1,(7,3)码,信息码110产生的CRC码就是:               101  11101 | 110,0000          111 01            1 0100            1 1101              1001  余数是1001,所以CRC码是110,1001    标准的CRC码是,CRC-CCITT和CRC-16,它们的生成多项式是:    CRC-CCITT=x16+x12+x5+1    CRC-16=x16+x15+x2+1

    一、CRC编码
    1、已知多项式和原报文,求CRC编码,如:使用多项式G(x)=x^5 + x^4 + x +1,对报文10100110进行CRC编码,则编码后的报文是什么?
    方法与步骤:

    步骤1:对报文10100110,在末尾添加所给多项式的最高次阶个0,如本题为x^5,则添加5个0,变为:1010011000000。

    步骤2:由多项式G(x)=x^5 + x^4 + x +1,得其阶数为1的二进制编码为:110011。

    步骤3:步骤1中求得的1010011000000对步骤2中求得的110011进行模二除法,所得到的余数即为校验码,把校验码添加在原报文尾部即为所求的编码报文1010011011000,具体如下:

    海明码和CRC编码


    2.已知道接收到的CRC编码,求原编码或判断是否出错,如:已知G(x)=x^5 + x^4 + x +1,接收的为1010011011001,问是否出错?

    步骤一:由多项式G(x)=x^5 + x^4 +海明码和CRC编码 x +1,得其阶数为1的二进制编码为:110011。

    步骤二:用接收的报文1010011011001对步骤一的110011进行模二除法,看余数是否为0,如为0则正确,如不为0,则出错,计算余数为1,则出错。如下图:

     


    二、海明码
    1.求海明码,如:求1011海明码。

    步骤一:求校验码位数r,公式为:2^r ≥r+k+1的最小r。题目中为2^3≥3+4+1,所以取r=3,即校验码为3位。

    步骤二:画图,并把原码的位编号写成2的指数求和的方式,其中位编号长度为原码和校验码个数之和,从1开始。校验码插在2的阶码次方的位编号下,且阶小于r。如下:

    海明码和CRC编码


    原码的位编号写成2的指数求和:
    7=2^2+2^1+2^0;
    6=2^2+2^1;
    5=2^2+2^0;
    3=2^1+2^0;

     

    步骤三:求校验位,即每个校验位的值为步骤二中“原码的位编号写成2的指数求和”式子中相应2的阶出现的位编号下原码的值异或。即:
    r0=I4异或I2异或I1=1;   (2^0次出现在7,5,3位,其对应的值为I4,I2,I1)
    r1=I4异或I3异或I1=0;   (2^1次出现在7,6,3位,其对应的值为I4,I3,I1)
    r2=I4异或I3异或I2=0;   (2^0次出现在7,6,5位,其对应的值为I4,I3,I2)
    把r0,r1,r2带入海明码,得所求的海明码为:1010101

    2.已知海明码,求原码或判断是否出错并改正错位,如:信息位8位的海明码,接收110010100000时,判断是否出错,并求出发送端信息位。

    步骤一:求校验码位数r,公式为:2^r ≥r+k+1的最小r。题目中为2^4≥4+8+1,所以取k=4,即校验码为4位。

    步骤二:根据作图,求得信息位编码和发过来的校验码记为r,并由原编码从新计算出新的校验码与发来的校验码r进行异或运算,具体如下:

     

    2011年05月16日 - kelly - 天使的翅膀

     
    得到,原码11000100,发送来的校验码r为1000

    再根据求R,把原码的位编号写成2的指数求和:
    12=2^3+2^2;
    11=2^3+2^1+2^0;
    10=2^3+2^0;
    9=2^3+2^0;
    7=2^2+2^1+2^0;
    6=2^2+2^1;
    5=2^2+2^0;
    3=2^1+2^0;

    求得:
    S3=r3异或(I8异或I7异或I6异或I5)
    S2=r2异或(I8异或I4异或I3异或I2)
    S1=r1异或(I7异或I6异或I4异或I3异或I1)
    S0=r0异或(I7异或I5异或I4异或I2异或I1)

    S3S2S1S0,其十进制为0,表示没出错,如果不为零,则其十进制数即为出错的位。
    本题S3S2S1S0=1001,十进制为9,即第九位出错。改过来既为:11010100

     

    注:不管用海明还是CRC编码,如果不是有必要或学密码学,不用想办法搞清原理,就拿它当像勾股定理一样使用就ok,否则,对一般来讲,的确有点痛苦。

    转载于:https://www.cnblogs.com/skl374199080/p/3463793.html

    展开全文
  • 计算机网络中采用循环冗余码校验数据的正确性。其原理是:发送方计算出待发送的二进制数据的循环冗余码,并随同原数据一起发送到接收方;接收方通过重新计算接收到的数据的循环冗余码,并和收到的循环冗余码进行...

    计算循环冗余码

    Description

    计算机网络中采用循环冗余码来校验数据的正确性。其原理是:发送方计算出待发送的二进制数据的循环冗余码,并随同原数据一起发送到接收方;接收方通过重新计算接收到的数据的循环冗余码,并和收到的循环冗余码进行比较,如果两者相同则可判定所收到的数据是正确的,否则说明数据是错误的。其中计算二进制数据的循环冗余码的计算过程如下:
    1.协议事先约定一个二进制生成表达式,本题设为10011;
    2.将待发送的二进制数据串的末尾加4个0;
    3.将补上0的数据串按模2除法除于生成表达式,取余数;
    4.该余数就是该二进制数据串的循环冗余码。
    
    例如: 
    数据串为:1101011011
    生成表达式为:10011
    循环冗余码为:1110
    
    计算过程如下: 

    根据上述的计算方法,请编写一个循环冗余码计算程序,假设二进制数据串的长度不超过20位,生成表达式固定为10011。

    Input

    输入的第一行含一个正整数k (1<=k<=10),表示测试例的个数。后面紧接着k行,每行对应一个测试例,含一个N位二进制串(1<=N<=20),代表数据。

    Output

    每个测试例对应一行输出,含一个5位二进制串,表示循环冗余码。

    Sample Input

    2110101101110101010

    Sample Output

    0111001001

    解题思路:

    模拟。

    AC代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    
    char str[30];
    char b[]="10011";
    
    int main(){
        int T;
        scanf("%d",&T);
        while(T--){
            getchar();
            scanf("%s",str);
            strcat(str,"0000");
            int len = strlen(str);
            for(int i = 0; i < len-4; ++i){
                if(str[i] == '0')
                    continue;
                int k = i;
                for(int j = 0; j < 5; ++j,++k){
                    if(str[k]^b[j])
                        str[k] = '1';
                    else
                        str[k] = '0';
                }
            }
            for(int i = len-5; i < len; ++i)
                printf("%c",str[i]);
            printf("\n");
        }
        return 0;
    }
    


    展开全文
  • CRC校验码计算详解 (网络工程师考试必备) 以实例说明:2008年下半年上午试题(18)。 采用CRC进行差错检验,生成多项式为G(X)=X4+X+1,信息码字为10110,则计算出的CRC校验码是: A. 0000 B. 0100 C. 0010 ...

    CRC校验码计算详解

    (网络工程师考试必备)

    以实例说明:2008年下半年上午试题(18)。

    采用CRC进行差错检验,生成多项式为G(X)=X4+X+1,信息码字为10110,则计算出的CRC校验码是:

    A. 0000 B. 0100 C. 0010 D.1111

    【分析】

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

    G(X)= X4+X+1

    G(X)=10011

    1.已知条件如下:

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

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

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

    2.计算步骤

    (1)计算XrM(X)

    也就是把M(X)的尾部添加r0

    XrM(X) = 10110 0000

    2)计算XrM(X)长除G(X),余数记做Y(X)

    这里的“长除”计算方法如下:

    XrM(X) 10110 0000

    -- G(X) 10011 (注意位对应方式,对应位进行异或运算即可)

    00101 0000

    -- G(X) 100 11 (计算方法同上)

    001 1100

    -- G(X) 100 11

    01111 (此数已经小于G(X),计算到此为止,即Y(X))

    注意Y(X)的位数为r(此处为4),所以Y(X) = 1111

    Y(X)即是CRC校验码。

    (3) 计算传输码字T(X) = XrM(X)-Y(X)

    计算方法:在M(X)末尾连接上Y(X)即可

    即:T(X) = 10110 1111

    【答案】

    此题只要计算出校验码Y(X)即可。正确答案为:D

    展开全文
  • 计算机网络中采用循环冗余码校验数据的正确性。其原理是:发送方计算出待发送的二进制数据的循环冗余码,并随同原数据一起发送到接收方;接收方通过重新计算接收到的数据的循环冗余码,并和收到的循环冗余码进行...
    计算机网络中采用循环冗余码来校验数据的正确性。其原理是:发送方计算出待发送的二进制数据的循环冗余码,并随同原数据一起发送到接收方;接收方通过重新计算接收到的数据的循环冗余码,并和收到的循环冗余码进行比较,如果两者相同则可判定所收到的数据是正确的,否则说明数据是错误的。其中计算二进制数据的循环冗余码的计算过程如下:
    1.协议事先约定一个二进制生成表达式,本题设为10011;
    2.将待发送的二进制数据串的末尾加4个0;
    3.将补上0的数据串按模2除法除于生成表达式,取余数;
    4.该余数就是该二进制数据串的循环冗余码。
    
    例如: 
    数据串为: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



    【分析】:首先要了解循环冗余校验码是什么。

    循环冗余校验码是通过除法运算来建立有效信息位和校验位之间的约定关系。假定,待编码的有效信息以多项式M(X)表示,将它左移若干位后,用另一个约定的多项式G(X)去除,所产生的余数就是校验位。有效信息位与校验位相拼接就构成了CRC码。当接收方收到发来的CRC码后,他仍用约定的多项式G(X)去除,若余数为0,表明该代码接收无误;若余数不为0,表明某一位出错,再进一步由余数值确定出错的位置,并予以纠正。

    循环冗余校验码的编码方法:

    循环冗余校验码由两部分组成,左边为信息位,右边为校验位。若信息位为N位,校验位为K位,则该校验码被称为(N+K,N)码。

    这里,需介绍一下模2的运算规则。模2运算不考虑加法的进位和减法的借位即0±0=0,0±1=1,1±0=1,1±1=0。作模2除法时,上商的原则是当部分余数首位是1时(即使被除数比除数小),商取1,反之商取0,然后按模2加减求得余数。当被除数逐步除完时,最终的余数比除数少一位,此余数就是校验位。

    对“模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,也无进位,无借位。相当于二进制中的逻辑异或运算

    g(x)和h(x)的除运算,可以通过g和h做xor(异或)运算二进制相除就是一个异或的过程。比如将11001与10101做xor运算:

          

    明白了xor运算法则后,举一个例子使用CRC-8算法求101001110100001的效验码。CRC-8标准的h(x) = x^8 + x^7 + x^6 + x^4 + x^2 + 1,既h是9位的二进制串111010101。 

    经过迭代运算后,最终得到的r是10001100,这就是CRC效验码。

    【代码】:明白原理后就是简单模拟。

    #include <iostream>
    #include<cstring>
    #include<algorithm>
    #include<cstdio>
    #include<streambuf>
    #include<cmath>
    #include<string>
    using namespace std;
    #define ll long long
    #define oo 10000000
    
    int n,m;
    char b[]="10011";
    int main()
    {
        string a;
        int t;
        scanf("%d",&t);
        while(t--)
        {
            cin>>a;
            a=a+"0000";
            for(int i=0;i<a.size()-4;i++)
            {
                if(a[i]=='0')
                {
                    continue;
                }
                int p=i;
                for(int j=0;j<5;j++,p++)
                {
                    if(a[p]^b[j])
                        a[p]='1';
                    else
                        a[p]='0';
                }
            }
            for(int i=a.size()-5;i<a.size();i++)
                printf("%c",a[i]);
            printf("\n");
        }
        return 0;
    }
    模拟

     

    转载于:https://www.cnblogs.com/Roni-i/p/8017489.html

    展开全文
  • Description计算机网络中采用循环冗余码校验数据的正确性。其原理是:发送方计算出待发送的二进制数据的循环...其中计算二进制数据的循环冗余码计算过程如下: >>协议事先约定一个二进制生成表达式,本设为1001
  • 3.数据校验码主要有奇偶校验码、海明校验码和循环冗余校验码 4.磁表面存储器记录信息是利用磁性材料的磁滞回归线特性 5.计算机的字长取决于运算器一次运算二进制数的位数 6.模 m 交叉存储器有 m 个存储模块,它们有...
  • 在数据通信中不加任何差错控制措施,直接用信道来传输数据是不可靠的,循环冗余校验码是最常见的检错方法,k + r,将生成的r位冗余位与收到的冗余位进行比较 故选A 3、 解析: 故选B 4、 解析: 相联存储器可以...
  • 计算机组成原理复习题目

    千次阅读 2020-01-21 10:01:42
    数据校验码主要有奇偶校验码、海明校验码和循环冗余校验码 磁表面存储器记录信息是利用磁性材料的磁滞回归线特性( 计算机的字长取决于运算器一次运算二进制数的位数 模m交叉存储器有m个存储模块,它们有各自的地址...
  • 计算机组成原理总结

    2020-12-12 22:29:54
    数据校验码主要有奇偶校验码、海明校验码和循环冗余校验码 磁表面存储器记录信息是利用磁性材料的磁滞回归线特性( 计算机的字长取决于运算器一次运算二进制数的位数 模m交叉存储器有m个存储模块,它们有各自的地址...
  • 一、简答1、试述浮点数规格化的目的和方法。答:浮点的规格化是为了使浮点数尾数的最高数值位为有效数位。...2、简述循环冗余码(CRC)的纠错原理。答:CRC码是一种纠错能力较强的校验码。在进行校验时,先将被检...
  • PAGE PAGE 1 [模拟] 计算机二级(JAVA)笔试-146 一选择(每小2分共70分) 下列各[A][B][C][D] 四个选项中只有一个选项是正确的 第1 新L/O技术和jav[A].utilzip中...循环冗余校验 D.以上都不是 参考答案C 答案解析
  • 请考虑一个利用除数10011进行计算循环冗余校验码(CRC码)。请找到10101011的两个碰撞。也就是说,请找出两个其他的数值,使之能够生成与10101011—样的循环冗余校验码总和。 关于CRC算法,我只是知道他的过程,...
  • 1. 计算机执行指令的过程中,需要由( )产生每条指令的操作信号并将信号送往相应的部件进行处理,以完成指定的操作。 A. CPU的控制器 B.... C....D....2. DMA控制方式是在( )之间直接建立数据通路... 循环冗余 4. 以下关于
  • 网络工程师2019上半年真题及答案、刷题 1.计算机执行指令的过程中,需要由(1)产生每条指令的操作信号并将信号送往相应的部件进行处理,已完成指定的操作。 A、CPU 的控制器 ...D、循环冗余 参考答案【D】
  • 若无法下载,请私信! 1.计算机执行指令的过程中,需要由(1)产生每条指令的操作信号并将信号送往相应的部件进行处理,已完成指定的操作。 A、CPU 的控制器 B、CPU 的运算器 ...D、循环冗余 参考答案【D】
  • D、循环冗余 以下关于RISC(精简指令系统计算机)技术的叙述中,错误的是(4)。 A、指令长度固定、指令种类尽量少 B、指令功能强大、寻址方式复杂多样 C、增加寄存器数目以减少访存次数 D、用硬布线电路实现指令...
  • 循环冗余校验码(CRC)3. CSMA/CD4. 冲突窗口5. Ethernet帧格式、最小帧长度计算6. 地址解析协议(ARP)7. 交换机四、网络层1. IP 协议五、传输层1. "慢启动、拥塞避免"算法六、应用层1. 细节七、试题安排1. 题型2....
  • 2005-2009软件设计师历年真题

    千次下载 热门讨论 2010-05-18 19:20:10
     • 校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码)  1.3 算术运算和逻辑运算  • 逻辑代数的基本运算和逻辑表达式的化简  1.4 数学基础知识  • 命题逻辑、谓词逻辑、形式逻辑的基础知识  • ...
  • 出版年: 2010-10 页数: 156 定价: 25.00元 ISBN: 9787111315964 内容简介 · · · · · · 《数论与有限域》是初等数论与有限域的入门教材。全书共分七章,前四章论述了数论中...7.6.2 循环冗余校验码 习题 参考文献
  • 第13~15章分别讲解了格雷循环冗余校验和纠错;第16~18章分别介绍了希尔伯特曲线、浮点数和素数公式。之后是各章习题的参考答案。附录分别介绍了计算机算术运算表、牛顿法和各种离散函数图像。
  • 第14章 循环冗余校验 276 14.1 简介 276 14.2 理论 277 14.3 实现 279 14.3.1 硬件实现 281 14.3.2 软件实现 283 14.4 习题 285 第15章 纠错 286 15.1 简介 286 15.2 汉明码 287 15.2.1 SEC-DED 289 ...
  • 13.删除除了id号不同,其他都相同的学生冗余信息 104 14.航空网的几个航班查询: 104 15.查出比经理薪水还高的员工信息: 105 16、求出小于45岁的各个老师所带的大于12岁的学生人数 106 17.求出发帖最多的人: 107 ...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

循环冗余校验码计算题