图解海明码(汉明码)原理——计算机组成原理
海明码是一种基于多组奇偶校验的纠错编码技术。通过将数据位和检错位按特定方式分组,当某一位出错时,可以通过校验组的组合结果精确定位错误位置。检错位数k与数据位数n需满足2^k≥n+k+1的关系,确保能覆盖所有可能的错误情况。检错位被安排在2的幂次方位置,其组合结果直接对应错误位的二进制编码,实现高效纠错。相比普通奇偶校验只能检错,海明码具有更强的纠错能力。
一、前言
海明码是计算机组成原理中一项重要的纠错技术,仅靠信息自身和几位检验位组合,就能判断哪一位出现错误。对比普通的奇偶校验,只能在一定范围内检验是否出错,而不能纠错。
而海明码本质上,其实是由几组奇偶校验组合而成。这篇文章页着重从这个角度展开分析。
二、原理
我们知道,海明码中有一个重要的关系式,倘若数据位为n,需要k检错位,
满足
这个关系式是如何得来的呢?
2.1一个例子
假设我们的数据共4位,那么由上述关系,需要加入3位检错位。将其组合成一个拥有七位的数字序列H7 H6 H5 H4 H3 H2 H1。
为什么说海明码本质上是由几组奇偶校验组合呢?
请看下面这张韦恩图。(图中三个圆圈 S1、S2、S3 分别代表三个独立的奇偶校验组;H1~H7 为海明码的7位编号,按 H7、H6、H5、H4、H3、H2、H1 顺序对应图中不同区域,每个位仅对应韦恩图的一片独立面积)
现在假设其中某一位出现错误,我们该如何通过奇偶校验查出错误呢?

海明码给出这样的思路:
将这7位数分为3组S1、S2、S3,每个数正好对应韦恩图的一片独立面积,对每组进行偶校验,
S1 = H1 H3
H5
H7
S2 = H2 H3
H6
H7
S3 = H4 H5
H6
H7
由于采用偶校验,我们假设出错的是H1,
及在三个分组中,S1分组出错,S2没出错,S3没出错,即可唯一确定H1出错。及S1 = 1 ; S2 = 0 ; S3 = 0
以此类推,可以得到以下表格:

相信你已经发现,出错的位置恰好对应其二进制编码,这也是为什么要将他们按照前面韦恩图那样的顺序填入其中。
我们将三个检错位放在H1、H2、H4三个特殊情况,即只有一组出错,它们的(S3S2S1)分别对应 001 、 010 、 100,即分别对应2的0 、1、2次方的位置。
由此,我们可以知道关系式的由来,若有 n 个数据位,那么加上 k个检错位 后,形成的拥有(n+k)位的数据,需要分别有一种情况来表示其出错,加上全0(即没有出错的情况),则共有 n+k+1 种情况,于是 ,才可以全部表示。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)