一、
k个数据位,设置r个校验位,则校验位能表示2^r个状态
2^r ≥ k + r + 1
2^r-1 ≥ k + r
校验码P放在2的幂次位上
数据D可以随便放(一般从右到左,从低位到高位)
校验码P的值为出现权值的位置H的数据D进行异或
最后得到海明码
二、校验
S1=P1 异或 D(与P1有关的D)
S2=P2 异或 D(与P2有关的D)
...
S1为低位,排列好的数转化为十进制,是出错数据的位置
若 最后转化的十进制=0,则没有错误。