Hamming码
概述
Hamming 码是 Richard Hamming (1950) 发明的第一个实用纠错编码方案,用 7 位传输 4 位信息(码率 4/7 ≈ 57%),能自动检测并纠正单个比特错误。
关键内容
Hamming(7,4) 码的构造
数据位 d₁, d₂, d₃, d₄ 放在位置 3, 5, 6, 7。 校验位 p₁, p₂, p₃ 放在位置 1, 2, 4(2 的幂次位置)。
位置: 1 2 3 4 5 6 7
内容: p₁ p₂ d₁ p₃ d₂ d₃ d₄
校验方程
- p₁ ⊕ d₁ ⊕ d₂ ⊕ d₄ = 0
- p₂ ⊕ d₁ ⊕ d₃ ⊕ d₄ = 0
- p₃ ⊕ d₂ ⊕ d₃ ⊕ d₄ = 0
纠错过程
接收后计算三个伴随式(syndrome)s₁, s₂, s₃。如果全为 0,无错误。否则 (s₃s₂s₁)₂ 的二进制值直接给出出错的位置!
例如 s₃=1, s₂=0, s₁=1 → 出错位置 = (101)₂ = 5,翻转第 5 位即可纠正。
精妙之处
校验位放在 2 的幂次位置,使得伴随式的二进制值直接指向出错位置——这是一个极其优雅的构造。
SECDED 扩展
增加一个全局奇偶校验位,将 (7,4) 码扩展为 (8,4) 码,实现单纠错双检错(SECDED: Single Error Correction, Double Error Detection)。这一扩展几乎不增加开销却显著提高可靠性。
工业应用
- ECC 内存:服务器和关键系统的内存使用 SECDED Hamming 码保护
- 闪存/SSD:使用 Hamming 码或更强的 BCH 码纠正存储错误
- 通信协议:许多基础通信协议使用 Hamming 原理进行错误检测
来源
- raw/books/信息论/04_hamming_1950_error_correcting_codes.md — Hamming (1950) 深度解析