Skip to content
难度中等(★★)
建议时长120分钟
本课难点
  • 校验位个数公式 2r >= m+r+1 的最小 r 求解(试值法)
  • 校验位位置 1/2/4/8/... 与 1-based 位序的习惯
  • 位序转二进制分解(哪些位为1就参与哪些 Px)用于找规律解题

1.2.4 海明校验码

本课核心知识点手绘速记(SVG)

📝 学习目标

  • 熟练计算海明校验位个数 r
  • 记住校验位插入位置:1、2、4、8、16...(2 的幂次)
  • 能用“位序二进制分解”判断某数据位由哪些校验位参与校验
  • 理解海明码“既可检错也可纠错”的原因:可定位错误位

🎯 知识点

1) 海明码的特点(课堂结论)

  • 三种常见校验里:
    • 奇偶校验:可检错,不可纠错
    • CRC:可检错(强),一般不可纠错
    • 海明码:既可检错也可纠错(常考最高频)

海明码本质:多组交叉的奇偶校验

2) 校验位个数 r 的求法(必考公式)

设信息位个数为 m,需要校验位个数为 r,则需满足:

2rm+r+1

做题方法:从 r=1 开始试,取满足不等式的最小 r。

课堂例:m=32

  • r=5:25=32,不够(右侧是 32+5+1=38)
  • r=6:26=64,满足 → r=6

3) 校验位放在哪些位置

校验位放在位序为 2 的幂次的位置:

  • P1 在第 1 位
  • P2 在第 2 位
  • P4 在第 4 位
  • P8 在第 8 位
  • ...

其它位置按顺序填入数据位 D。

课堂强调:海明码不是“把校验位拼在后面”,而是插入在数据位中间。

4) 哪些校验位校验某个数据位(找规律核心)

把位序 i 写成二进制:

  • 哪一位是 1,就说明该位参与对应的校验位 Px。

例:第 10 位

  • 10(10) = 1010(2) = 8 + 2
  • 参与校验:P8、P2

例:第 14 位

  • 14(10) = 1110(2) = 8 + 4 + 2
  • 参与校验:P8、P4、P2

这也是课堂说的“不会编码也能靠找规律解题”。

🧠 难点与易错点

  • 易错1:公式写错(常把 m+r+1 写成 m+1
  • 易错2:校验位位置混淆(必须是 1/2/4/8/16...)
  • 易错3:判断参与校验时,不会把位序拆成 2 的幂次

🔑 关键词解释

  • 位序(position index):从 1 开始编号(海明码题常用 1-based)。
  • 综合校验(syndrome):各校验组结果组合起来形成的二进制数,指示错误位位置。

🔍 联想扩展(软设关联)

  • 海明码通常默认能纠正 1 位错(SEC: Single Error Correction)。
  • 题干若提“检错纠错能力”,要想起码距与能力关系。
  • 软设题经常把“求 r”与“找某数据位由哪些校验位校验”组合在一起。

🧪 例题(按难度)

简单(3题)

单选
海明码中校验位的典型插入位置规律是:
单选
对 8 位数据采用海明码,至少需要多少位校验位 r?
单选
在位序从 1 开始的海明码中,第 14 位参与哪些校验位的校验?

中级(3题)

例题1(求校验位个数)

对 32 位数据采用海明码,至少需要增加多少位校验位?

单选
选择至少需要的校验位个数:

例题2(找规律:某位由哪些校验位校验)

某海明码位序从 1 开始计数,问第 10 位数据位参与哪些校验位的校验?

单选
选择参与校验的校验位:

例题3(概念题)

下列关于海明码的叙述正确的是:

单选
选择正确叙述:

困难(1题)

单选
海明码在接收端计算得到综合校验(syndrome)为 `0110`(二进制)。若采用 1-based 位序,则错误位最可能在:

📚 本课小结

  • r 的求法:2r >= m+r+1(取最小 r)
  • 校验位位置:1/2/4/8/16...
  • 位序二进制分解:决定参与哪些校验组