海明码计算方式
2的i次方:i=7,6,5,4,3,2,1,0对应:128 64 32 16 8 4 2 1
假设需要发送的数据是 101101,使用海明码进行错误纠正,确定需要的检查位的数量,并计算出海明码。
检查位计算工时:2的r次方>=k+r+1
P(i)位置计算: M(i)对应位置 2的(i-1)次方
k=6,r=4,e(r)
M(i): M10 M9 M8 M7 M6 M5 M4 M3 M2 M1
P(i): 1 0 P4 1 1 0 P3 1 P2 P1
二进制(r位):1010 1001 1000 0111 0110 0101 0100 0011 0010 0001
-------------------------------------------------------------------------------------------------
e1 = M1|+|M3|+|M5|+|M7|+|M9
e2 = M2|+|M3|+|M6|+|M7|+|M10
e3 = M4|+|M5|+|M6|+|M7
e4 = M8|+|M9|+|M10
-------------------------------------------------------------------------------------------------
e(i)=0,即P(i)=e(i)=0,M(1,2,4,8)对应的是检查位,所以求需要分别求M(1,2,4,8)=P(i)
e1 = M1|+|M3|+|M5|+|M7|+|M9 = 0 = M1|+|0 = M3|+|M5|+|M7|+|M9 = 0
e2 = M2|+|M3|+|M6|+|M7|+|M10 = 0 = M2|+|0 = M3|+|M6|+|M7|+|M10 = 0
e3 = M4|+|M5|+|M6|+|M7 = 0 = M4|+|0 = M5|+|M6|+|M7 = 0
e4 = M8|+|M9|+|M10 = 0 = M8|+|0 = M9|+|M10 = 0
-------------------------------------------------------------------------------------------------
P1= M3|+|M5|+|M7|+|M9 = 1|0|1|0 = 0
P2= M3|+|M6|+|M7|+|M10 = 1|1|1|1 = 0
P3= M5|+|M6|+|M7 = 0|1|1 = 0
P4= M9|+|M10 = 0|1 = 1
-------------------------------------------------------------------------------------------------
将P(1,2,3,4)分别带入P(i)
数据:101101
数据位:6
检查位:4
数据总位数:10
海明码:1011100100