海明码的算法
不多啰嗦,很多资料太理论了,把个人理解的东西写个大家参考一下.知道怎么算就行了,不然太纠结了.海明码是纠错码
算法:
例如原始数据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 为0 依次算出其他位
如何纠错
重新计算 如果效验为错误 如 2, 4错 2+4=6 则6号数据位错误
转载于:https://blog.51cto.com/ccjjzj/526534