zoukankan      html  css  js  c++  java
  • 计算机系统基础知识03

    校验码

      码距与检错纠错:

        一个编码系统的码距就是整个编码系统中任意(所有)两个码字的最小距离。例如:若一个编码系统有四种编码分别为:0000,0011,1100,1111,此编码系统中0000与1111的码距为4;0000与0011的码距为2,是此编码系统的最小码距。因此该编码系统的码距为2。

        1.在一个码组内为了检测e个误码,要求最小码距应该满足:d>=e+1

        2.在一个码组内为了纠正t个误码,要求最小码距应该满足:d>=2t+1

        3.同时纠错检错:d>=e+t+1

       例如:

         假如我们现在要对A,B两个字母进行编码。我们可以选用不同长度的编码,以产生不同码距的编码,分析它们的检错纠错能力。

         1.若用1位长度的二进制编码。若A=1,B=0.这样A,B之间的最小码距为1.

          合法码:{0,1};非法码:{0,1}

             2.若用2位长度的二进制编码,可选用11,00作为合法编码,也可以选用01,10作为合法编码。若以A=11,B=00为例,A、B之间的最小码距为2。合法码:{11,00}。非法码:{01,10} 

             3.若用3位长度的二进制编码,可以选用111,000作为合法编码。A,B之间的最小码距为3。

            合法码:{111,000} 非法码:{001,010,011,110,101,100}

          

    校验码的3种码  

    1.奇偶校验码

    人为的在编码后的最高位或最低位加一些校验码。具体加的是1。

    例如:某编码现在有2个1,编码后再加1个1。使1的个数变成奇数3个。这样在传输过程如果出错,则会变成偶数个1。从而知道出错了。

    只能检测代码中奇数位出错的编码,但不能发现偶数位出错的情况。

    2.海明码

    海明码的校验码的位置必须是在2^n位置(n从0开始,分别代表从左边数起分别是第1、2、4、8、16......),信息码也就是在非2n位置、

    设数据位是n位,校验位是k位。则n和k必须满足以下关系:

      2^k >= n+k+1

      练习:海明码是一种纠错码,其方法是为需要校验的数据位增加若干校验位,使得校验位的值决定于某些被校验位的数据,当被校验数据出错时,可根据校验位的值的变化找到出错位,从而纠正错误,对于32位的数据,至少需要加()个校验位才能构成海明码。

      A .3               B .4             C.5              D.6

      以10位数据为例,其海明码表示为D9D8D7D6D5D4P4D3D2D1P3D0P2P1中,其中Di(0 <= i <=9)表示数据位,Pj(1 <= j <=4)表示校验位,数据位D9由P4、P3和P2进行校验(从右至左D9的位序为14,即等于8 + 4 + 2,因此用第8位的P4、第4位的P3和第2位的P2校验),数据位D5由()进行校验

       A .P4P1     B.P4P2       C.P4P3P1   D.P3P2P1 

        

    3.循环冗余校验码CRC:

    这个校验码会产生一个多次方程,这个多次方程会跟信息码会有一个模%2运算。所得的余数就是CRC所需要加的位数。

    练习:

      

      

  • 相关阅读:
    双链表( 初始化,建立,插入,查找,删除 )
    单链表(程序员宝典)
    单链表(建立、插入、删除、打印)
    Hive- 表
    Spark- 性能优化
    Spark- Checkpoint原理剖析
    Spark- 优化后的 shuffle 操作原理剖析
    Spark- Spark普通Shuffle操作的原理剖析
    Spark- Spark内核架构原理和Spark架构深度剖析
    Spark- Spark基本工作原理
  • 原文地址:https://www.cnblogs.com/linbin7/p/10878204.html
Copyright © 2011-2022 走看看