计算海明校验码

我们首先了解一下海明校验码的公式

一、海明码校验 - 图1

海明码校验位为K,信息位为m。

假设原始信息101101为例,计算的信息位为m=6,海明码校验位为k=4,所以信息位加校验位的总长度为10位。

海明码校验可以放在任何位置,但习惯上校验位被从左到右安排在1、2、4、8……..2^n的位置上

校验码编号 P1 P2 P3 P4
1 0 1 1 0 1
位置编号 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10

我们需要求出P1、P2、P3、P4对应的海明校验码?

信息位 第四位 第三位 第二位 第一位
B3 0 0 1 1
B5 0 1 0 1
B6 0 1 1 0
B7 0 1 1 1
B9 1 0 0 1
B10 1 0 1 0

P1计算的是第一位列对应为1的信息位,在查看最上面的表可以看出,B3->1,B5->0,B7->1,B9->0,然后进行模2运算得到结果,同理P2、P3、P4也是。
111.jpg
总结:海明校验码为0001

利用海明校验码校验数据

由计算结果我们可以知道

校验码编号 P1 P2 P3 P4
0 0 1 0 0 1 1 1 0 1
位置编号 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10
信息位 第四位 第三位 第二位 第一位
B1 0 0 0 1
B2 0 0 1 0
B3 0 0 1 1
B4 0 1 0 0
B5 0 1 0 1
B6 0 1 1 0
B7 0 1 1 1
B8 1 0 0 0
B9 1 0 0 1
B10 1 0 1 0

222.jpg
把X8X4X2X1的二进制,转换为十进制时,结果为0,则无错;结果非0(假设为Y),则错误发生在第Y位。