"如何不使用^操作实现异或运算"(python)

分析与解答:最简单的方法就是遍历两个整数所有的位,如果两个数的某一位相等,那么结果中这一位的值为0,否则结果中这一位的值为1。

class MyXOR:
    def __init__(self):
        self.BITS = 32

    # 获取x与y的异或的结果
    def xor(self, x, y):
        res = 0
        i = self.BITS - 1
        while i >= 0:
            # 获取x与y当前的bit值
            b1 = (x & (1 << i)) > 0
            b2 = (y & (1 << i)) > 0

            # 只有这两个都是1或0的时候结果为0
            if (b1 == b2):
                xoredBit = 0
            else:
                xoredBit = 1

            res <<= 1
            res |= xoredBit
            i -= 1

        return res

if __name__ == "__main__":
    x = 3
    y = 5
    mx = MyXOR()
    print(mx.xor(x, y))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值