引言
在学习计算机组成原理的时候接触到了海明校验码,其实这个东西我们在学习专业课的时候接触过类似的东西,
当再次见到的时候比较熟悉,但是有很多的人对这块的知识比较模糊,不是很清楚,在知道信息位的情况下使怎样确
定校验位的?不知道怎样确定最后的海明码?不清楚校验位是怎样就进行校验的?下面小编就从这几方面以一个实例
为基础来讲解一下海明码的相关知识。
首先我们应该查阅百度百科,了解一下海明码的先关知识,《海明码》。
核心公式解读:2^r≥k+r+1
其中k为信息位的个数,r为校验位的个数;那么我们怎样来确定校验位呢?下面以一个经典的实例来讲解:
例如:二进制码1011 求它的海明编码 步骤如下:
1、信息位k=4,由上面公式知道,r的最小值为3,所以校验位为3.
2、所以海明码的位数为7位,那么应该如何分配信息位和校验位的位置呢?以及校验位的值为多少?
3、分配校验位的位置:校验位的位置分配有规律,一般都放置在2^n的位置处,也就是1、2、4、8...的位置上。
4、分配信息位的位置:信息位的位置分配都是从高位到低位依次存放。所以分配结果如图:
5、开始确定R1、R2、R3的值,想要确定这几个值,我们就应该知道每一个位置上的信息位有那几个校验位来校
验,校验的原则是:想要校验第几位(i),那么久应该满足对应的那几个校验位的位置相加等于i,例如:我们校验
第3位,3=1+2,所以就用R1和R2来校验,想校验第7位,7=1+2 +4,所以就用R1、 R2、R3来校验。依据这个原则,
1101的校验位的对应表如下:
完成了上面的分配以后,下面我们就从上面的表中找出,每一个校验吗参与的校验有哪些?这是求解校验码的值
的很关键的一步,结果如下:
从上面的位置我们就能知道每一个校验吗参与的校验的信息位,然后就是用异或(相同的两个数异或结果为0,不
同的两个数异或后结果为1),这样我们根据信息位的位置,找到对应该位置上的值,进行异或,就能很快的的到结
果:R1=1;R2=0;R3=0;将这三个数依次添加到那张7位表中,就得到了7位的海明码!!!
6、那么海明码是如何进行校验的呢?上面得到的最终结果如下图:
从上面的表中我们可以得到两个规律:
1、所有的校验码所在的位只是有对应的校验码进行校验,如第1位(只有R1校验)、第2位(只有R2校验)、第4
位(只有R3校验),。。。。也就是这些位如果发生了差错,影响的只是对应的校验结果,不会影响其他校验码的校
验结果。这一点非常的重要,如果最终发现知识一个校验组中的校验结果不符,则直接可以知道是对应校验组中的校
验码在传输过程中出现饿了差错。
2、所有的信息吗为均被至少两个校验码进行了校验,也就是至少校验了两次,查看对应的是哪两组校验结果不
符,然后根据上表就可以很快的确定是哪位信息吗在传输过程中出现了差错!!
小结
上面是对海明码的一个校验的简单的介绍,如果读者想对这个校验过程深入研究,还需要查阅一些其他的资料,
在这篇博客中主要是讲解了对海明码的求解过程!!所以如果读者对海明码的求解还是不太明白的话,可以给我发私
信和这QQ联系我,我们一起交流学习,共同探讨这方面的知识!!