题解 | #懂二进制#
懂二进制
http://www.nowcoder.com/practice/120e406db3fd46f09d55d59093f13dd8
//一个二进制数和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--)
查看23道真题和解析
