奇偶校验码是最简单的检错编码方法,在原始数据基础上增加一位校验位,使整个码字中"1"的个数满足奇数或偶数要求。
对于数据位 $D_n D_{n-1} \cdots D_1$,校验位 $P$:
接收端将所有位(含校验位)异或:偶校验结果为 0 无错、1 出错;奇校验结果为 1 无错、0 出错。
数据 = 1011001,$P = 1 \oplus 0 \oplus 1 \oplus 1 \oplus 0 \oplus 0 \oplus 1 = 0$,偶校验码 = 0_1011001(1 的个数 = 4,偶数 ✓)。
数据 = 1011001,$P = \overline{0} = 1$,奇校验码 = 1_1011001(1 的个数 = 5,奇数 ✓)。
发送 01011001(偶校验) 接收 01011001(无错):0⊕1⊕0⊕1⊕1⊕0⊕0⊕1 = 0 ✓ 接收 01111001(第2位出错):0⊕1⊕1⊕1⊕1⊕0⊕0⊕1 = 1 ✗ 检测到错误
| 特性 | 说明 |
|---|---|
| 能检测 | 奇数个位出错 |
| 不能检测 | 偶数个位同时出错 |
| 能否纠正 | 不能纠正任何错误 |
| 冗余度 | 仅 1 位校验位,开销最小 |
将数据排成矩阵,分别对行和列进行奇偶校验,行列交叉点定位单个错误。
数据矩阵(4×8): D1 D2 D3 D4 D5 D6 D7 D8 行校验 A 1 0 1 1 0 0 1 0 0 B 0 1 1 0 1 0 0 1 0 C 1 1 0 0 0 1 1 0 0 D 0 0 1 1 1 1 0 1 1 列校验 0 0 1 0 0 0 0 0 0
海明码本质上是多个校验组的奇偶校验组合使用。
| 编码方式 | 校验位数 | 检错能力 | 纠错能力 | 冗余度 |
|---|---|---|---|---|
| 奇偶校验 | 1 位 | 检 1 位错 | 无 | 最低 |
| 海明码 | r 位 | 检多位错 | 纠 1 位错 | 中等 |
| CRC | r 位 | 检多位错 | 无 | 可控 |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。