精简版 · 小杯2026-08 冻结,已停止更新(发布前修订了 4 处已知错误)。后续勘误与新增内容只在正式版。看正式版(中杯)→
Skip to content

海明码详解

大纲定位

本条已移出计算机组成原理大纲

不在现行 408 计组大纲内。CO「二、数据的表示和运算」现为 数制与编码 / 运算方法和运算电路 / 整数的表示和运算 / 浮点数的表示和运算四条,「三、存储器层次结构」七条中亦无校验码。

但它没有消失,只是换了科目:408 计算机网络「三、数据链路层(三)差错控制」的纠错编码仍在纲,海明码正属此列。

谁该读:① 备考 CN 差错控制的考生;② 目标院校自命题的考生;③ 想搞懂内存 ECC / SSD 纠错的读者。 谁可以跳过:只考统考 408、且 CN 部分已单独复习的考生,本篇可作选读。

考情分析

CO 侧现存真题仅 2013 年一道 2 分选择题(已加编者注说明大纲变动)。能力目标是:会算校验位数量、会写出各校验位的值、会由故障字定位出错位并判断该不该纠,以及区分 SEC 与 SEC-DED。

海明码的核心思想

海明码在数据位之间插入若干校验位,使码距 d=3,从而可以纠正 1 位错误检测 2 位错误

精妙之处在于:每个数据位被分配到多个校验组中,出错时各校验组的结果拼起来直接给出出错位的编号

校验位数量

设数据 k 位,校验位 r 位,总码长 n=k+r。校验位数量满足:

2rk+r+1

+1 是为了表示"无错误"的情况(故障字全 0)。

数据位 k校验位 r总码长 n
123
437
8412
16521
32638
64771

2013 年那道遗留真题要的就是这张表:问"8 位数据能纠 1 位错,至少需要几位校验位",代入 2r8+r+1r=41613 ✓,r=3812 ✗,所以 4 位

其余机制:一句话各表

机制结论
校验位位置放在编号为 20,21,22, 的位上(第 1、2、4、8…位)
分组规则位编号的二进制第 j 位为 1,则该位归入第 j 组校验
编码对每组做偶校验,算出各校验位的值
检错纠错接收端各组重新校验,结果拼成故障字——它的值就是出错位的编号,全 0 表示无错
能力标准海明码 d=3纠 1 位检 2 位,二选一不能兼得
SEC-DED再加一个覆盖全部位的 P0d=4,可同时"检 2 纠 1"

交互可视化

加载可视化中...

用它把编码 → 传错 → 定位 → 纠正走一遍,比读文字快。

完整的分组走查、端到端编码例题在网络那边:见计算机网络博客的海明码一篇——那里是纲内内容。本篇只保留 CO 侧遗留真题用得上的部分。

考点清单

  • [ ] 校验位数量公式:2rk+r+1
  • [ ] 校验位放在第 20,21,22,
  • [ ] 分组规则:位编号二进制中第 j 位为 1 则归入 Pj
  • [ ] 编码时对各组做偶校验求校验位
  • [ ] 故障字 = 出错位编号(全 0 表示无错)
  • [ ] 标准海明码:d=3,纠 1 位或检 2 位(二选一)
  • [ ] SEC-DED:加全校验位 P0d=4,同时检 2 纠 1

真题练习

相关真题(1题)