计算机系统基础知识03

校验码编码

  码距与检错纠错:spa

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

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

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

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

   例如:方法

     假如咱们如今要对A,B两个字母进行编码。咱们能够选用不一样长度的编码,以产生不一样码距的编码,分析它们的检错纠错能力。im

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

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

         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开始,分别表明从左边数起分别是第一、二、四、八、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由P四、P3和P2进行校验(从右至左D9的位序为14,即等于8 + 4 + 2,所以用第8位的P四、第4位的P3和第2位的P2校验),数据位D5由()进行校验

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

    

3.循环冗余校验码CRC:

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

 

练习: