Python 仅使用位运算符的两个数字的总和?

Python 仅使用位运算符的两个数字的总和?,python,bit-manipulation,bitwise-operators,Python,Bit Manipulation,Bitwise Operators,我的问题是,如何在不使用布尔、if-else条件或逻辑运算符的情况下添加两个数字 我一直在尝试在Python中编写一个代码来添加两个数字,但只使用位运算符;换句话说,没有循环、if-else和算术运算符 我也一直在看这个页面和其他编程站点,但是这个问题的所有解决方案都有while循环或if-else条件。我已经找到了一个假定的解决方案,那就是 假设它是递归执行的,但它生成了一个递归错误:递归的最大深度超过了。因为它没有一个基本情况 现在我在问我自己,是否有可能做到这一点。那么另一个问题是,有可能

我的问题是,如何在不使用布尔、if-else条件或逻辑运算符的情况下添加两个数字

我一直在尝试在Python中编写一个代码来添加两个数字,但只使用位运算符;换句话说,没有循环、if-else和算术运算符

我也一直在看这个页面和其他编程站点,但是这个问题的所有解决方案都有while循环或if-else条件。我已经找到了一个假定的解决方案,那就是 假设它是递归执行的,但它生成了一个递归错误:递归的最大深度超过了。因为它没有一个基本情况

现在我在问我自己,是否有可能做到这一点。那么另一个问题是,有可能吗?如果是,我该怎么做

以下是我的失败代码:

x=7
y=2
def Sum(x, y):
    suma=x^y
    carry=(x&y)<<1
    return Sum(suma, carry)
print(Sum(x, y))
x=7
y=2
定义和(x,y):
suma=x^y

进位=(x&y)您在评论中说输入不得大于10^5。在这种情况下,有限数量的进位传播步骤将足以消除进位项并产生最终和:

def binop_add(x, y):
    sum, carry = x, y
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 1
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 2
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 3
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 4
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 5
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 6
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 7
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 8
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 9
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 10
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 11
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 12
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 13
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 14
    sum, carry = (sum ^ carry), (sum & carry) << 1 # 15
    # assert carry == 0
    return sum
def binop\u添加(x,y):
和,进位=x,y

sum,carry=(sum^carry),(sum&carry)它必须支持任意大小的输入吗?是的,那些支持内存的输入如果您允许自己使用递归和逻辑运算符,您可以滥用短路
/
来分支基本情况,但在问题规范中,它更多的是一个无趣的缺陷,而不是实际使用位运算符执行加法。你说的“支持内存的那些”是什么意思?对不起,我错了,代码必须允许不大于10^5的条目