异或的数学符号为“⊕”,计算机符号为“xor”。
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
海明码=信息码+校验码
信息码位数 | 1 | 2-4 | 5-11 | 12-26 | 27-57 | 58-120 |
校验码位数 | 2 | 3 | 4 | 5 | 6 | 7 |
4位信息码,有3位校验码
32位信息码,有6位校验码
海明码
信息码:1010110,求海明码
解:
海明码=信息码+校验码
信息码:7位,则校验码:4位,海明码=7+4=11
数据位: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
编码后: | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 |
位置: | X1 | X2 | X3 | X4 | |||||||
校验码: | 0 | 1 | 1 | 0 | |||||||
1 | 0 | 1 | 0 | 1 | 1 | 0 | |||||
求X1 | √ | √ | √ | √ | √ | √ | |||||
尾数为1,所以 X1+1+0+0+1+0=0,X1=0 | |||||||||||
求X2 | √ | √ | √ | √ | √ | √ | |||||
倒数2位为1,所以 X2+1+1+0+1+0=0,X2=1 | |||||||||||
求X3 | √ | √ | √ | √ | |||||||
倒数3位为1,所以 X3+0+1+0=0,X3=1 | |||||||||||
求X4 | √ | √ | √ | √ | |||||||
倒数4位为1,所以 X4+1+1+0=0,X4=0 |
异或运算
如果 a === b, 则 a⊕b=1
如果 a !== b,则 a⊕b=0
信息码:1010110
校验码:0110
海明码:0111 0101 110