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.
int rangeBitwiseAnd(int m, int n)
{
int i = 31;
int tmp = 1;
while(i>=0)
{
tmp = 1<<i;
if( (m&tmp) == (n&tmp) )
i--;
else
break;
}
return (m>>(i+1))<<(i+1);
}