class Solution {
public:
int rangeBitwiseAnd(int m, int n) {
int rec=0;
for(int i=0;m!=n;i++)
{
m>>=1;
n>>=1;//把两个数字同时右移,如果最高位位数相同就会留下最高为,如果位数不同必定会是0;因为从低位开始&,m++会造成进位
//
rec++;
if(m==0)return 0;//提前特判;当m==0时说明m已经移位完了,此时n的位数大于m结果一定是0;因为m++到n会把所有位数清0;
}
return n<<rec;
}
};