201. Bitwise AND of Numbers Range

201. 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.

public class Solution {
  public int rangeBitwiseAnd(int m, int n) {
    if (m == 0)
      return 0;

    int powerOf2 = 1;
    while (m != n) { //if m!=n, current bit result is 0.
      m >>= 1;
      n >>= 1;
      powerOf2 <<= 1;
    }
    return m * powerOf2;
  }
}

 

posted @ 2016-07-31 08:09  新一代的天皇巨星  阅读(117)  评论(0)    收藏  举报