//一个二进制数和1相与,就可以知道这个二进制数的最后一位是1还是0
//因为1和1相与还是1, 而0和1相与还是0
int countBitDiff(int m, int n ) {
int cnt = 0;
for(int i = 0; i < 32; i++) //右移0位时检查最后一位是1还是0
//右移1位时检查倒数第二位是1还是0
{
if((m >> i & 1) != (n >> i & 1))
cnt++; //一直到右移31位,检测倒数第32位也就是最高位
}
return cnt;
}
//当然也可以从最高位向最低位检查
//即for(int i = 31; i >= 0; i--)

京公网安备 11010502036488号