leetcode Bitwise AND of Numbers Range

题目链接

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

思路:(是看了别人的代码才有的思路,不然我就用循环做了)
其实从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;
    }
}

你可能感兴趣的:(leetcode Bitwise AND of Numbers Range)