一、作用
这是关于计算机基础的知识。我们都知道计算机系统运行时,各个部件之间要进行数据交换,为了确保数据在传送的过程中正确无误,一是提高硬件电路的可靠性,二是提高代码的校验能力,包括查错和纠错。此文主要是从海明码的校验能力来说,也是使用校验码的方法来检测传送的数据是否出错。
它的实现原理,是在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为:
四、结语
第一次看海明校验的时候,不知道它是怎么计算出校验位上的值,之后和同伴讨论了之后感觉自己明白了,但当另一个同伴再问的时候,需要点时间才能拾起,所以这次进行了总结。学习真的需要反复。