简单题,当m和n不相等时,即区间内必存在奇偶数,故低位AND后取0,故结果为m和n从高位开始取相等的那些位得到的值。代码如下:
int rangeBitwiseAnd(int m, int n) {
int p = 0;
while(m != n && m != 0){
++p;
m >>= 1;
n >>= 1;
}
return m << p;
}