【计算机网络】—— 差错编码(纠错编码)

目录

海明码:发现双比特错,纠正单比特错;

一、海明码工作流程

确定校验码位数r

海明不等式:
2 r > = k + r + 1 2^r >= k+r+1 2r>=k+r+1 r为冗余信息位,k为信息位。
【计算机网络】—— 差错编码(纠错编码)

确定校验码和数据的位置

校验位按照顺序分别放在2的几次方的位置,数据按照顺序把剩余空格填满即可。
【计算机网络】—— 差错编码(纠错编码)

求出校验码的值

【计算机网络】—— 差错编码(纠错编码)
假如要求 P 1 P_1 P1​校验码的实际值, P 1 P_1 P1​对应的二进制位为0001, P 1 P_1 P1​的二进制位中最后一位为1, P 1 P_1 P1​能够校验所有二进制位中最后一位为1的数据,分别为 D 1 D_1 D1​, D 2 D_2 D2​, D 4 D_4 D4​, D 5 D_5 D5​,接着令所有要检验的位异或值为0(包括 P 1 P_1 P1​本身):
P 1 ⊕ D 1 ⊕ D 2 ⊕ D 4 ⊕ D 5 = 0 P_1\oplus D_1\oplus D_2 \oplus D_4 \oplus D_5=0 P1​⊕D1​⊕D2​⊕D4​⊕D5​=0通过上述公式可以得到 P 1 = 0 P_1=0 P1​=0。

同理,对于 P 2 P_2 P2​, P 2 P_2 P2​的二进制位0010,则 P 2 P_2 P2​能够校验在二进制中第二位为1的所有数据。

因此,可以求得101101的海明码为0010011101。

检错并纠错

假设0010011101数据在传输过程中第五位出错,则接收端接收到的数据为0010111101。

现在开始检错并纠错,令所有要校验的位进行异或运算,类似于第三步【求出校验码的值】。

&P_1&异或得到的值为1,&P_2&异或得到的值为0,&P_3&异或得到的值为1,&P_4&异或得到的值为0。将其拼接为二进制值,则该值为0101,对应的十进制数为5,这样就找到了出错的位置,即出错位是第5位。

注意,海明码只能发现双比特错但是无法纠正,海明码可以纠正单比特错。

总结

【计算机网络】—— 差错编码(纠错编码)

上一篇:【洛谷】P4887 【模板】莫队二次离线


下一篇:循环移位异或加密