您的位置:首页 > 其它

leetcode Bitwise AND of Numbers Range

2015-10-14 13:24 302 查看
题目链接

不得不说。我的位操作真的不是很好。碰到位操作的题目就不会。注定不能做硬件程序员。。

思路:(是看了别人的代码才有的思路,不然我就用循环做了)

其实从m到n。。。我们可以想象,只有m和n的二进制公共前缀起作用。因为从m到n。公共前缀后面的每一位都会出现0.这样与出来的结果就是0.所以我们只要找到m,n的二进制公共前缀就好。

public class Solution {
public int rangeBitwiseAnd(int m, int n) {
int bitmove=0;
while(m!=n)
{
m>>=1;
n>>=1;
bitmove++;
}
return n<<bitmove;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: