2018-08-13 22:50:51
问题描述:

问题求解:
首先如果m 和 n不相等,那么必然会有至少一对奇偶数,那么必然末尾是0。
之后需要将m 和 n将右移一位,直到m 和 n相等。
本质上,本题就是求m 和 n的最长preSubNum。
public int rangeBitwiseAnd(int m, int n) {
if (m == 0) return 0;
int moveFactor = 1;
while (m != n) {
m >>= 1;
n >>= 1;
moveFactor <<= 1;
}
return m * moveFactor;
}