您的位置:首页 > 其它

海明校验码

2015-10-31 11:39 239 查看


一、作用

     这是关于计算机基础的知识。我们都知道计算机系统运行时,各个部件之间要进行数据交换,为了确保数据在传送的过程中正确无误,一是提高硬件电路的可靠性,二是提高代码的校验能力,包括查错和纠错。此文主要是从海明码的校验能力来说,也是使用校验码的方法来检测传送的数据是否出错。

     它的实现原理,是在m个数据位之外加上k个校验位,从而形成一个m+k位的新的码字,使新的码字的码距比较均匀地拉大。把数据的每一个二进制位分配在几个不同的偶校验位的组合中,当某一位出错后,就会引起相关的几个校验位的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为进一步自动纠错提供了依据。

     可能看这原理较难理解,请看下面的例子。

二、确定校验码方法

     要计算海明校验码的值,很简单,三步即可:

     首先,要知道海明校验码是放在2的幂次位上的,即“1,2,4,8,16,32······”;

     其次,对于信息位为m的原始数据,需要加入k位的校验码,它满足m+k+1<2k;

     最后,即可计算出校验码。

三、举例

     例如:要计算原始信息位为101101100的海明校验码。

     1.先用m+k+1<2k计算出校验位:9+k+1
<2k→k=4,即校验位为4位。


     2.把原始信息位填入下表1:





     3.填充校验位

     这是比较关键的一步,看看都有哪些位置用到了哪几个校验位,如下表2:

                                                                 


     至此,咱们就可以知道每个校验位都校验了哪些位置,即:

     Bit1=3,5,7,9,11,13

     Bit2=3,6,7,10,11

     Bit4=5,6,7,12,13

     Bit8=9,10,11,12,13

     最后,用位置上的原始信息(表1)做异或运算(相同时为0,不同时为1)就可以知道校验位上的值了,即:

     Bit1=1⊕0⊕1⊕0⊕1⊕0=1

     Bit2=1⊕1⊕1⊕1⊕1=1

     Bit4=0⊕1⊕1⊕0⊕0=0

     Bit8=0⊕1⊕1⊕0⊕0=0

     把校验位填到表1为:



四、结语

     第一次看海明校验的时候,不知道它是怎么计算出校验位上的值,之后和同伴讨论了之后感觉自己明白了,但当另一个同伴再问的时候,需要点时间才能拾起,所以这次进行了总结。学习真的需要反复。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息