奇偶校验码
原理
在 n 位数据后附加 1 位校验位,使整个码字中 1 的个数满足约定的奇偶性:
- 偶校验:所有位中 1 的个数为偶数
- 奇校验:所有位中 1 的个数为奇数
例子(偶校验)
| 数据位 | 1 的个数 | 校验位 | 发送码字 |
|---|---|---|---|
| 1011 | 3(奇) | 1 | 1011 1 |
| 1010 | 2(偶) | 0 | 0010 0 |
接收方对整个码字(含校验位)做 XOR,结果为 0 → 无误,结果为 1 → 检测到错误。
局限性
- 只能检测奇数个错误(1位、3位、5位…错误可检测)
- 偶数个错误检测不到(两位同时翻转,奇偶性不变)
- 不能纠错,只能知道”有错”,不知道”哪里错”
二维奇偶校验(水平垂直校验)
将数据排成矩阵,对每行、每列各加一个校验位:
数据: 行校验位:
1 0 1 1 1
0 1 0 1 0
1 1 0 0 0
列校验位:
0 0 1 0 0(角落位)
能定位单比特错误(行列交叉点),可纠正 1 位错,检测 2 位错。