快速海明码计算方法!

海明码由两部分构成:数据位(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
只要不进位就可以了!

posted @ 2025-06-30 08:46  嘉君  阅读(53)  评论(0)    收藏  举报