题目来自于leetcode
https://leetcode.com/problems/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.
Credits:
Special thanks to @amrsaqr for adding this problem and creating all test cases.
class Solution {
public:
int rangeBitwiseAnd(int m, int n) {
int*arraym=new int[32]();
int*arrayn=new int[32]();
int i=0;
while(m!=0)
{
arraym[i]=m%2;
m/=2;
i++;
}
i=0;
while(n!=0)
{
arrayn[i]=n%2;
n/=2;
i++;
}
int j;
for(j=31;j>=0;j--)
{
if(arrayn[j] !=arraym[j])
break;
}
for(;j>=0;j--)
arraym[j]=0;
int expon=1;
int ans=arraym[0];
for(j=1;j<32;++j)
{
expon*=2;
ans+=arraym[j]*expon;
}
return ans;
}
};