计算机系统基础知识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所需要加的位数。

练习:

  

  

原文地址:https://www.cnblogs.com/linbin7/p/10878204.html