gpt4 book ai didi

python - 不赞成进位的二进制加法

转载 作者:太空宇宙 更新时间:2023-11-03 21:35:49 25 4
gpt4 key购买 nike

我目前正在使用二进制加法,如果有进位,则返回 False。我当前的代码是:

def binaryadd(one, other):
str_1, str_2 = str(one), str(other)
for a,b in zip(str_1[::-1], str_2[::-1]):
if a == b == '1':
return False
return int(bin(rev_bin(one) + rev_bin(other))[2:])

因此 10111 + 1000 将返回 11111,10110 + 1011 将返回 False。我认为会有更有效的代码;例如另外检查溢出,但我想知道哪些代码可以做到这一点。有没有更好的办法呢?

最佳答案

从存在一个“列”开始,该“列”的两个操作数都有1,因为在这种情况下我们生成一个进位。进位也可以传播,但前提是已经生成了进位。

我们可以使用按位与 (&) 来检查这一点。如果没有进位,我们可以只是按位或 (|):

def binaryadd(one, other):
if <b>one & other</b>:
return False
return <b>one | other</b>

或者单行:

def binaryadd(one, other):
return not bool(one & other) and one | other

关于python - 不赞成进位的二进制加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53250262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com