2.5.2 · 建议 18 分钟

海明码怎样找到出错的位置

给四位数据分组校验,用指误字定位单错,并比较增加总校验位后的能力。

可学习
教材定位:纪禄平等《计算机组成原理》第 6 版,2.5.2,第 75—77 页(书内印刷页码)。
学习顺序:先完成奇偶校验。
先读懂,再操作

从这个问题开始:每个校验组都只给一位结果,怎样合起来指向位置?

不同位置参加不同组

把校验位放在第 1、2、4 位,数据放在第 3、5、6、7 位。按位置编号的二进制位决定参加哪些组。

把检错结果组成指误字

每组做偶校验,得到 0 或 1。按 4、2、1 的位权组合后,在最多一位出错的假设下,数值正好指出错误位置。

单错纠正有前提

普通 7 位海明码可以按单错假设纠正,但面对双错可能误纠。增加总校验位可在最多两位错误条件下纠正单错、识别双错。

本页小词典 · 遇到生词可以回来看
海明码
通过多组奇偶校验形成的编码。
指误字
按约定顺序组合各组检错结果,单错时可指明位置。
码距
两个码字对应位置不同的位数。
冗余
为校验额外加入的信息,并非原始数据。

动手观察:海明码怎样找到出错的位置

动态图解 · 公式推演

先选“不翻转”,逐组生成校验位;之后只翻转一位观察定位。 修改参数后点击上方按钮生效;用“下一步”观察过程。

演示范围从左到右编号;各组偶校验。扩展模式总校验位在第 8 位,只保证最多两位错误条件下的单错纠正、双错检出。

带着问题再试一次

  1. 依次只翻转第 1 到第 7 位,核对指误字是否对应位置。
  2. 同时翻转 1、2 位,比较普通模式与 8 位模式,说明误纠是什么。
做完再看解释

检查理解

用两道小题检查是否看懂本页的核心过程,答错可以重新尝试。

1. 本例三组检错位按 4、2、1 排列是 101,单错时指向哪里?
2. 普通 7 位海明码看到非零指误字,就能保证自动修复任何错误吗?
本节知识清单与课堂延伸

k 位数据、r 位校验位若要求区分每个单错位置与无错状态,需要 2^r≥k+r+1。本例 k=4,r=3。

普通海明码最小码距为 3:可选择只检出最多两位错误,或在单错假设下纠正一位错误。扩展总校验位后,不能再用普通码的判断流程代替完整判断。

依据教材章节范围重新设计,图示、演示数据与练习均为本站制作。配合课本阅读;本站不提供教材电子版。