海明码的算法

       不多啰嗦,很多资料太理论了,把个人理解的东西写个大家参考一下.知道怎么算就行了,不然太纠结了.海明码是纠错码

 

算法:

例如原始数据10011010

2^n次方位作为效验位 即 1 2 4 8 16 32 64……

原始数据转换为 _ _1_001_1010

可标记为p1p2 …..P12

其中 3 5 6 7 9 10 11 12 为数据位

在把数据位转换为效验位和如

3=1+2   

5=1+4

6=2+4

7=1+2+4

9=1+8

10=2+8

11=1+2+8

12=4+8

…..

P1效验位 为 上面还有1的数据位 即 3 5 7 9 11

_ _1_001_1010   

如果全部校验的位置中有奇数个1,把该奇偶校验位置为1;如果全部校验的位置中有偶数个1,把该奇偶校验位置为0

P1 依次算出其他位

 

如何纠错

重新计算  如果效验为错误 如 2, 4  2+4=6 6号数据位错误