差错控制(纠错编码)
- 一、海明码
- 1.1 确定校验码位数r
- 1.2 确定校验码和数据的位置
- 1.3 求出校验码的值
- 1.4 检错并纠错
一、海明码
**海明码:**发现双比特错,纠正单比特错。
1.1 确定校验码位数r
海明不等式:
r 为冗余信息位,k为信息位
例:要发送的数据:D =101101
数据的位数 k = 6,满足不等式的最小r为4,
也就是D=101101的海明码应该有6+4=10位,其中原数据6位,校验码4位。
1.2 确定校验码和数据的位置
1.3 求出校验码的值
令所有要校验的位异或=0
P1⊕D1⊕D2⊕D4⊕D5 = 0 => P1 =0
P2⊕D1⊕D3⊕D4⊕D6 = 0 => P2 = 0
P3⊕D2⊕D3⊕D4 = 0 => P3 = 0
P4⊕D5⊕D6 = 0 => P4 = 1
故101101的海明码位0010011101。
1.4 检错并纠错
假设第五位出错,因此接收到的数据位0010111101。
令所有要校验的位异或运算。
P1⊕D1⊕D2⊕D4⊕D5 = 1
P2⊕D1⊕D3⊕D4⊕D6 = 0
P3⊕D2⊕D3⊕D4 = 1
P4⊕D5⊕D6 = 0
从P4往P1写:0101 =》 5 ,
二进制序列位0101,恰好对应十进制5,这样就找到了出错的位置,即出错位是第5位。