【计组】海明码

写在前面:

学习计组的时候,听网课的时候一开始没整明白,后来自己找了其他视频跟博客,总算把这个知识点捋清楚了~
现整理成笔记,希望能帮助到一起学习的同学们。我会在文末附上一个我参考的视频的地址,视频讲得很清晰明了,很有帮助。


海明码解题过程(以数据1010为例):

1.求出海明码长度及检验码有多少位:

在这里插入图片描述
海明码的纠错目的是发现数据中哪一位发生错误。
数据总共有m+p位,每一位都有出错的可能,因此只出错一位的情况有m+p种。
校验码总共有2^p种取值,其中有一种取值对应着数据正确的情况,另外的取值分别对应着某一位出错的情况。
因此需要2^p-1>=m+p,才能保证能够发现每一种(单个位)出错的情况。
通过上面推导得出的公式构建不等式并求解,即可求得应该增加多少位校验码。

2.确定海明码的位置,及进行分组:

在这里插入图片描述
校验码放在2^n(n=0、1、2、…)位置上。
分组:首先将位置序号1、2、3、…化成二进制。然后遵循以下规律分组:
第1组:序号二进制数的第1位为1(从右开始数);第2组:第2位为1;第3组:第3位为1…依次类推。

3.求出校验码的值及海明码:

得到分组之后,按求奇偶校验码的方法求校验码,通常题目会说明是使用“奇校验”还是“偶校验”。

在这里插入图片描述
之后再把求得的校验码放入数据中即可得到海明码。

在这里插入图片描述

4.进行纠错:

在这里插入图片描述
首先按照原数据写出p1、p2、p3、m3、m5、m7,然后在每一组前面新增一位e1、e2、e3。e1、e2、e3的值按奇偶校验法的规则求出。

在这里插入图片描述
求出e1、e2、e3之后,将这三个值按顺时针旋转九十度得到一个新的数,如:

在这里插入图片描述
将这个数化为10进制,即可知道是哪一位出错。比如此处的101,那就是第五位出错。如果数值为000,则证明数据没有出错。


参考资料(链接可能失效,侵删):
①★★视频:天勤公开课-计算机组成原理:https://www.bilibili.com/video/BV1SJ41157pR?from=search&seid=3918195512624917135
②视频:哈工大-计算机组成原理:https://www.bilibili.com/video/BV1ix41137Eu?p=109


END