快速海明码计算方法!
海明码由两部分构成:数据位(D)+校验位(P)
比如四位的数据:11101,就可以这么摆放(一般先把P写出来,剩下的再填数):
| N9 | N8 | N7 | N6 | N5 | N4 | N3 | N2 | N1 |
|---|---|---|---|---|---|---|---|---|
| 1 | P8 | 1 | 1 | 0 | P4 | 1 | P2 | P1 |
也就是位次从1开始计算,二的幂次位置存放的是校验位
放好位置之后,就可以开始计算了
计算方式是把第N位拆解成多个P位相加,这样就知道N是由哪些P来校验的了
比如在本例中:
N9 = P8 + P1(读作:N9由P8和P1所校验)
N7 = P4 + P2 + P1
N6 = P4 + P2
N5 = P4 + P1
N3 = P2 + P1
然后翻转式子,进行异或运算(本质上是模2加,也就是以2为模的加法,括号内是扩展内容,看不懂忽略)
P8 = N9
P4 = N7 ⊕ N6 ⊕ N5
P2 = N7 ⊕ N6 ⊕ N3
P1 = N9 ⊕ N7 ⊕ N5 ⊕ N3
于是可得:
| N9 | N8 | N7 | N6 | N5 | N4 | N3 | N2 | N1 |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
附录:
1101:
| N7 | N6 | N5 | N4 | N3 | N2 | N1 |
|---|---|---|---|---|---|---|
| 1 | 1 | 0 | P4 | 1 | P2 | P1 |
101:
| N6 | N5 | N4 | N3 | N2 | N1 |
|---|---|---|---|---|---|
| 1 | 0 | P4 | 1 | P2 | P1 |
01:
| N5 | N4 | N3 | N2 | N1 |
|---|---|---|---|---|
| 0 | P4 | 1 | P2 | P1 |
1:
| N3 | N2 | N1 |
|---|---|---|
| 1 | P2 | P1 |
因为本质上是模2加,也就是以2为模的加法所以计算方法也可以是:
P8 = N9
P4 = N7 + N6 + N5
P2 = N7 + N6 + N3
P1 = N9 + N7 + N5 + N3
只要不进位就可以了!

浙公网安备 33010602011771号