leetcode_Bitwise AND of Numbers Range

描述:

Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers in this range, inclusive.

For example, given the range [5, 7], you should return 4.

思路:

由于相邻的两个数最低位肯定有0有1,所以直接and肯定为0,所以可以通过直接and来和向右移位获得一个区间内的相同的位数,最后再通过向左移位获得一个区间所有数字相与的结果。

代码:

 public int rangeBitwiseAnd(int m, int n) {
        int offset=0;
        while(m!=n)
        {
            m>>=1;
            n>>=1;
            offset++;
        }
        return m<<offset;
    }


你可能感兴趣的:(bit,operation,range,and,Numbers,Bitwise)