You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何对两个数字的二进制执行AND、OR、XOR按位运算

问题原因

你代码的核心问题是AND运算的循环中已经把输入的a、b两个变量逐次右移,最终两个值都变为0,后续执行OR、XOR运算时,操作的都是已经清零的变量,自然无法得到正确结果。

修正方案

每次做位运算前都重置为原始输入的数值即可,修改后代码如下:

# 输入后先保存原始数值,避免运算过程中被修改
a_original, b_original = int(input("Please enter the first number: ")), int(input("Please enter the second number: "))
m = ""
n = ""
p = ""

print(sep="\n")

print(bin(a_original), bin(b_original), sep="\n")
print(sep="\n")

length = max([len(bin(a_original)), len(bin(b_original))]) - 2

# AND
# 每次运算前重置为原始值
a, b = a_original, b_original
for i in range(length):
    if bin(a)[-1] == "1" and bin(b)[-1] == "1":
        m += "1"
    else:
        m += "0"
    a = a >> 1
    b = b >> 1

print("0b" + m[::-1], "| AND")

# OR
# 每次运算前重置为原始值
a, b = a_original, b_original
for i in range(length):
    if bin(a)[-1] == "1" or bin(b)[-1] == "1":
        n += "1"
    else:
        n += "0"
    a = a >> 1
    b = b >> 1

print("0b" + n[::-1], "| OR")

# XOR
# 每次运算前重置为原始值
a, b = a_original, b_original
for i in range(length):
    if bin(a)[-1] != bin(b)[-1]:
        p += "1"
    else:
        p += "0"
    a = a >> 1
    b = b >> 1
print("0b" + p[::-1], "| XOR")

内容的提问来源于stack exchange,提问作者sada995

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:48:01