思路 只要 left < right,说明两者在某些低位上存在不同,为了找到它们的公共前缀(高位相同部分),不断将 left 和 right 同时右移(即除以2),直到它们相等,记录右移的次数 shift。最后,将相等的值左移 shift 位,补回原来去掉的低位0,即为最终结果 class Solution:def rangeBitwiseAnd(self, left: int, right: int) -> int:shift=0while left<right:left>>=1right>>=1shift+=1return left<<shift