求任一个整数的二进制数的未尾的零的个数?
以上是本人在一家公司的面试题,以下方法经历测试完全可以实现:
// 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;
}
本文介绍了一种通过位操作计算任意整数二进制表示中末尾零的数量的方法。该方法通过不断将整数右移并检查最低位是否为零来进行计数,直至遇到第一个奇数值为止。
1218

被折叠的 条评论
为什么被折叠?



