Appearance
海明码校验与纠错
考情分析
海明码是 408 中数据链路层和计算机组成原理都可能涉及的知识点,考查频率中等偏高。常见考法是给定一组数据位,要求写出完整的海明码,或者给定一个收到的码字,要求判断并纠正错误位。
考频:★★★
海明距离
海明距离是指两个等长码字之间对应位置上不同比特的个数。例如:
编码方案的最小海明距离
| 最小海明距离 | 能力 |
|---|---|
| 检测 | |
| 纠正 | |
| 检测 |
海明码的
校验位的个数
设数据位有
这个不等式的含义:
常见对应关系:
| 数据位 | 校验位 | 总位数 |
|---|---|---|
| 1 | 2 | 3 |
| 2-4 | 3 | 5-7 |
| 5-11 | 4 | 9-15 |
| 12-26 | 5 | 17-31 |
校验位的位置
海明码中,校验位放在第
以
| 位置 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 内容 |
其中
校验位的计算
每个校验位
对于 7 位海明码:
| 位置 | 二进制 | 被哪些校验位校验 |
|---|---|---|
| 1 = 001 | ||
| 2 = 010 | ||
| 3 = 011 | ||
| 4 = 100 | ||
| 5 = 101 | ||
| 6 = 110 | ||
| 7 = 111 |
因此:
校验第 1, 3, 5, 7 位 → (使这些位的异或为 0) 校验第 2, 3, 6, 7 位 → 校验第 4, 5, 6, 7 位 →
编码例题
已知: 数据
第 1 步: 放入数据位
| 位置 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 内容 | 1 | 1 | 0 | ? | 1 | ? | ? |
第 2 步: 计算校验位
第 3 步: 完整的海明码
| 位置 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 内容 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
海明码为
检错与纠错过程
接收方收到码字后,分别计算每组校验的结果:
将
- 如果
:无错 - 如果
:对应的十进制数就是出错位的位置,将该位取反即可纠正
示例: 假设收到
交互可视化
全局校验位
基本海明码的
- 1 位错误:
且 异或结果 → 定位并纠正 - 2 位错误:
且 异或结果 → 检测到错误但无法纠正
408 考试中如果题目说"海明码能检测 2 位并纠正 1 位错误",指的就是带全局校验位的情况。
易错点
1. 校验位位置是
2. 计算校验位时要把自身位置也算进去
3. 纠错指针的组合顺序
高频考点清单
- 海明距离与检错/纠错能力的关系
- 校验位个数的计算:
- 校验位的位置(
位)和每个校验位覆盖的范围 - 给定数据位,计算完整的海明码
- 给定收到的码字,判断并纠正出错位
- 基本海明码 vs 带全局校验位的海明码