
思路:模拟一遍L-R进行与运算的结果可以发现L,R的二进制位从高到低第一个不相同的位置后面全是0。我们只需要判断前面二进制位是否为1并转为10进制数
代码:
class Solution {
public:int rangeBitwiseAnd(int left, int right) {int res=0;for(int i=30;i>=0;i--){if((left>>i&1)!=(right>>i&1)) break;if((left>>i&1)) res+=1<<i;}return res;}
};