1.2.4 海明校验码
📝 学习目标
- 熟练计算海明校验位个数 r
- 记住校验位插入位置:1、2、4、8、16...(2 的幂次)
- 能用“位序二进制分解”判断某数据位由哪些校验位参与校验
- 理解海明码“既可检错也可纠错”的原因:可定位错误位
🎯 知识点
1) 海明码的特点(课堂结论)
- 三种常见校验里:
- 奇偶校验:可检错,不可纠错
- CRC:可检错(强),一般不可纠错
- 海明码:既可检错也可纠错(常考最高频)
海明码本质:多组交叉的奇偶校验。
2) 校验位个数 r 的求法(必考公式)
设信息位个数为 m,需要校验位个数为 r,则需满足:
做题方法:从 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...
- 位序二进制分解:决定参与哪些校验组