用 Python 编写程序,在给定范围内查找数字范围的按位与
pythonserver side programmingprogramming更新于 2026/1/11 8:44:17
假设我们有两个值 start 和 end,我们必须找到范围 [start, end](包括两者)内所有数字的按位与。
因此,如果输入为 start = 8 end = 12,则输出将是 8 是二进制的 1000,12 是二进制的 1100,因此 1000 AND 1001 AND 1010 AND 1011 AND 1100 是 1000,即 8。
要解决这个问题,我们将遵循以下步骤 −
- n := end - start + 1
- x := 0
- 对于范围为 31 到 0 的 b,减少 1,执行
- 如果 2^b < n,则
- 退出循环
- 如果 2^b AND start AND end 非零,则
- x := x + (2^b)
- 如果 2^b < n,则
- 返回 x
示例
让我们看看下面的实现以便更好地理解 −
def solve(start, end): n = end - start + 1 x = 0 for b in range(31, -1, -1): if (1 << b) < n: break if (1 << b) & start & end: x += 1 << b return x start = 8 end = 12 print(solve(start, end))
输入
8, 12
输出
8
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

