二进制中,统计两个数的相应位(bit)不同可以采用
1.异或操作,
故用异或运算结果 同0不同1
所以两个数异或的结果中1就是不同的位
然后逐位相与制成0 最后统计个数
static int BitDiffer(int a, int b)
{
int m = a ^ b;
int num = 0;
while(m>0)
{
m &= (m-1); //逐位相与统计个数
num++;
}
return num;
}
或采用逐位对比
int BitDiffer(i