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.

 

 1 class Solution {
 2 public:
 3     int rangeBitwiseAnd(int m, int n) {
 4         if(m==0) return 0;
 5 
 6         int p=0;
 7         while(m!=n)
 8         {
 9             m=m>>1;
10             n=n>>1;
11             p++;
12         }
13 
14         return m<<p;
15     }
16 };

 

posted on 2015-05-20 16:28  黄瓜小肥皂  阅读(108)  评论(0编辑  收藏  举报