计算海明校验码
我们首先了解一下海明校验码的公式
海明码校验位为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也是。
总结:海明校验码为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 |

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