计算C语言中8位二进制值的汉明距离

Gök*_*Nas 4 c binary bit-manipulation count hamming-distance

我写了一个比较2个两位无符号整数的新程序.比较汉明距离.但我的算法并不完美.你能告诉我这段代码有什么问题:(感谢很多!!

这是我的计算方法;

int countHammDist(unsigned int n, unsigned int m)
{
int i=0;
unsigned int count = 0 ;
for(i=0; i<8; i++){
if( n&1 != m&1 ) {
    count++;
    }
n >>= 1;
m >>= 1;

}
return count;
}
Run Code Online (Sandbox Code Playgroud)

a和b 8位二进制文​​件.

 PrintInBinary(a);
 PrintInBinary(b);

 printf("\n %d", countHammDist(a,b));
Run Code Online (Sandbox Code Playgroud)

让我告诉你输出;

Enter two unsigned integers (0-99): 55 64
Your choices are 55 and 64
Number A: 00110111
Number B: 01000000
Hamming distance is ; 5
Run Code Online (Sandbox Code Playgroud)

Hay*_*tuk 7

把parantheses放在n&1和m&1附近.

if ((n&1) != (m&1))
Run Code Online (Sandbox Code Playgroud)

http://ideone.com/F7Kyzg

这是因为!=在&:http://www.swansontec.com/sopc.html之前