求任一个整数的二进制数的未尾的零的个数?
以上是本人在一家公司的面试题,以下方法经历测试完全可以实现:
// 8 0000 1000
// 1 0000 0001
// & ^异或 |或 !非 >>右移 <<左移 >>>带负号右移 <<<带负右移
// 0 0000 0000
int getBinaryWithInt(int n){
//n&1==0表示求这个数的最后一位数是否为1
while((n & 1) == 0) {n >>= 1; //向右移一位,再判断第一位是否为1
++count;//计数器++
}
return count;
}