在数据后附加 1 位校验位,使整个数据中 1 的个数为奇数(奇校验)或偶数(偶校验)。
数据: 1011001 (4个1)
偶校验位: 0 → 发送: 10110010 (4个1, 偶数)
奇校验位: 1 → 发送: 10110011 (5个1, 奇数)
将数据看作多项式,用生成多项式 G(x) 做模 2 除法,余数作为 FCS(帧校验序列)。
1. 数据后补 r 个 0(r = G(x) 的最高次幂)
2. 对 G(x) 做模 2 除法
3. 余数作为 FCS 附加到数据后
例:数据 M=101001,G(x)=1101(x³+x²+1)
步骤1: M 后补 3 个 0 → 101001000
步骤2: 101001000 ÷ 1101 → 余 011
步骤3: 发送帧 = 101001 011
收到: 101001011
用 G(x)=1101 做模 2 除法
余数 = 0 → 无差错
余数 ≠ 0 → 有差错
在数据位中插入 r 个校验位,满足:2^r ≥ m + r + 1(m 为数据位数)。
位号: 1 2 3 4 5 6 7
类型: P1 P2 D1 P3 D2 D3 D4
↑ ↑ ↑
校验位(2 的幂次位置:1, 2, 4, 8...)
P1 覆盖位号: 1,3,5,7,...(二进制末位为 1)
P2 覆盖位号: 2,3,6,7,...(二进制倒数第 2 位为 1)
P3 覆盖位号: 4,5,6,7,...(二进制倒数第 3 位为 1)
S1 = P1⊕D1⊕D2⊕D4
S2 = P2⊕D1⊕D3⊕D4
S3 = P3⊕D2⊕D3⊕D4
S = S3S2S1 = 错误位号(000 表示无错)
| 考点 | 说明 |
|---|---|
| CRC 计算 | 给定数据和 G(x),计算 FCS |
| CRC 检错 | 接收后验证是否出错 |
| 海明码计算 | 给定数据,计算校验位 |
| 海明码纠错 | 给定接收码,定位并纠正错误 |
| 检错纠错能力 | 码距与检错 / 纠错能力的关系 |
↑ 站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。