(a+b问题)两数相加不使用算数运算符

(a+b问题)两数相加不使用算数运算符

class Solution(object):
    def x_plus_y(self, x, y):
        """a+b问题"""
        # 将x和y值 相与 左移 进一
        self.x_AND_y = (x & y) << 1
        # 将x和y值 异或
        self.x_XOR_y = x ^ y
        while True:
            # 储存 旧的异或值
            self.new_XOR = self.x_AND_y ^ self.x_XOR_y
            
            # 储存 旧的相与值
            self.new_AND = (self.x_AND_y & self.x_XOR_y) << 1
            
            # 新的相与和异或值 重新存到旧的里做循环
            self.x_XOR_y = self.new_XOR ^ self.new_AND
            
            self.x_AND_y = (self.new_XOR & self.new_AND) << 1
            
            # 判断相与运算是否等于0
            if self.new_AND == 0 or self.x_AND_y == 0:
                if self.new_XOR > self.x_XOR_y:
                    print(self.new_XOR)
                else:
                    print(self.x_XOR_y)
                break


a_add_b = Solution()
a_add_b.x_plus_y(112, 111)


"""
输出结果:
223
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值