【零基础向】软考之路(第一章)计算机系统知识(第四节)

写在前面:

       本系列文章用于记录本人软考学习历程,适用于零基础人群,每天不定期更新,如果读者哪里不理解或者发现哪里理解的有问题,欢迎评论,一起进步学习,祝大家都能顺利通过考试~大笑

第四节 校验码

      本为了确保计算机系统运行时各个部件之间进行数据传送的时候正确无误,一般有两种办法:一是提高硬件电路的可靠性,二是提高代码的校验能力(查错和纠错)。通常使用的方法是校验码。

      基本思想:把可能出现的编码分为两类,合法编码错误编码

      合法编码用于传送数据

      错误编码不允许在数据中出现。

      合理的设计错误编码以及编码规则,使得数据在传送中出现某种错误时会变成错误编码,这样就可以检测出接收到的数据是否有错。

       这里需要解释一个关键性的名词,码距。

       码距:指的是一个编码系统中任意两个合法编码之间至少有多少个二进制位不同。

       例如 0000  0001 之间码距为1    0110  1011   之间码距为3

       3中常用的校验码:奇偶校验码海明码循环冗余校验码

  • 奇偶校验码

     通过在编码中增加一位校验位来使编码中1的个数为奇数(奇校验)或者为偶数(偶校验),从而使码距变为2。

       对于奇校验,可以检测代码中奇数位出错的编码,但不能发现偶数位。

      奇性也就是模二运算后得到1,偶性反之。(模二运算就是所有位依次相加,进行二进制运算,不进位,最后得到0或者1)

  • 海明码

     海明码是一种多重奇偶检错系统。它将信息用逻辑形式编码,一遍能够检错和纠错。用在海明码中的全部传入码字是由原来的信息和附加的奇偶校验组成的。每一个这种奇偶位被编在传输码字的特定位置上。

       需要死记得公式: 2k-1>= n + k(注:前面为2的K次方,并不是2乘以K)

      其中,k代表检验位数,n代表数据位

       校验位占得位置为Pi,那么他的位置为海明码中的第2的i-1次方的位置,举个例子:

      校验位P1在海明码中的位置就是1

      校验位P2在海明码中的位置就是2

      校验位P3在海明码中的位置就是4

      校验位P4在海明码中的位置就是8

      假设数据位是8位,需要4个校验位,那么组成的海明码就是

      H12   H11   H10   H9   H8   H7   H6   H5   H4   H3   H2   H1   --这行代表海明码

        D7    D6     D5     D4   P4    D3   D2   D1   P3   D0   P2    P1   --这行代表组成海明码的元素,由4个校验位和8个数据位组成

来看一道例题深入了解一下海明码:

    例题:设数据为01101001,试采用4个校验位来求其偶校验方式的海明码。

    解:由题得到所有数据为为D7DD5D4D3D2D1D0 = 01101001

   根据海明码中的对应关系(被校验的海明位的下标等于所有参与校验该位的校验位的下标之和,校验位由自身校验)推导出各校验位的计算公式:

    P1 D D D D D6 = 1  1 = 1  

     PD D D D D= 1  0  1  1  1 = 0 

    PD D D D= 0  0  1  0 = 1 

    PD D D D= 0  1  1  0 = 0 

     求得的海明码为:

     H12   H11   H10   H9   H8   H7   H6   H5   H4   H3   H2   H1   

        D7    D6     D5     D4    P4    D3   D2   D1   P3    D0   P2     P

      0     1      1     0    0    1    0    0   1    1     0    1

  • 循环冗余校验码
      循环冗余校验码,简称CRC,它被广泛应用于数据通信领域和磁介质存储系统中。它利用生成多项式为k个数据位产生r个校验位来进行编码,其编码长度是k+r。循环冗余校验码由两部分组成,左边为信息码,右边为校验码。信息吗占r位,校验码就占n-k位。n位循环冗余校验码的字长,又称为(n,k)码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值