gpt4 book ai didi

python - 二进制减法 - Python

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:07 25 4
gpt4 key购买 nike

我想做一个二进制计算器,但减法部分有问题。这是我的代码(我已尝试对我在该网站上找到的代码进行修改)。

    maxlen = max(len(s1), len(s2))

s1 = s1.zfill(maxlen)
s2 = s2.zfill(maxlen)

result = ''
carry = 0

i = maxlen - 1
while(i >= 0):
s = int(s1[i]) - int(s2[i])
if s <= 0:
if carry == 0 and s != 0:
carry = 1
result = result + "1"
else:
result = result + "0"
else:
if carry == 1:
result = result + "0"
carry = 0
else:
result = result + "1"
i = i - 1


if carry>0:
result = result + "1"

return result[::-1]

该程序对某些二进制减法工作正常,但对其他二进制文件却失败。有人可以帮我吗,因为我找不到错误?非常感谢。

最佳答案

简短回答:s1[i] == s2[i]carry == 1 时,您的代码是错误的.

更长的答案:您应该重构您的代码,使 s==-1s==0s==1,然后在每个 case 中对 carry 的值进行分支:

if s == -1:  # 0-1
if carry == 0:
...
else:
...
elif s == 0: # 1-1 or 0-0
if carry == 0:
...
else:
...
else: # 1-0
if carry == 0:
...
else:
...

通过这种方式,每种可能性都有一个单独的 block ,因此不会像您第一次尝试时那样忽略案例。

关于python - 二进制减法 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27696241/

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