汉明码生成过程:
把信息和校验码安排成一个n位区块,其中校验位的位置分别是在n位区块中的第2^(n-k-1),...2^2,2^1,2^0位,其余位置依次放置原始信息。
发送端:
- 每个信息位为1的位置以二进制值表示;
- 所有信息位是1的位置值一起经过XOR产生汉明码,依次填入位置;
- 将n位信息传输给接收端。
接收端:
- 对所接收到的信息位是1的位置值做XOR运算,得到汉明码;
- 用此汉明码和校验码进行XOR运算,如果其结果为零,则表示没有错误,如果结果不为零,则此结果即表明了发生错误的位置。
例子中采用8位信息,4位校验码,n=12,k=8。


说明
校验位的位置由n=12,k=8,计算得出:2^3=8,2^2=4,2^1=2,2^0=1,即校验位分别在区块的8、4、2、1位置。
以上“区块位置二进制”——是把区块位置的十进制换为2进制,如12的十进制换为2进制,[12]10=[1100]2。
信息位是1的位置值一起经过XOR产生汉明码。发送端信息为1的区块有:10、9、7、3。(注意:第4、2、1的区块信息虽然是1,但却不是信息位,而是校验位)经计算得出汉明码为0111,依次填入第8、4、2、1的校验码位置。

接受端信息位为1的区块有:11、10、9、7、3

取出接受端收到的汉明码(由n、k计算出汉明码位置):0111,让0111与接收端根据接受到的数据产生的汉明码1100与运算(XOR),其结果为1011,不全为0,所以得出传输的数据有错误,把1011换算成10进制[1011]2=[11]10,所以出错的位置为区块的第11位,即区块位置的第11位的1应该是0,从而查错纠错。