【发布时间】:2020-09-25 10:32:55
【问题描述】:
我想做一个二进制计算器,但减法部分有问题。这是我的代码(我已尝试将其中的代码修改为我在此网站上找到的总和)。
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]
该程序适用于某些二进制减法,但适用于其他二进制减法。 有人可以帮助我,因为我找不到错误吗?非常感谢。
【问题讨论】:
-
删除所有现有代码并写
def SubtractionBinary(s1, s2): return bin(int(s1, 2) - int(s2, 2))[2:] -
请描述您的方法的想法。有意义吗?
-
@user3856011 - @kindall 指出您可以使用
int(s, 2)将二进制字符串s转换为Python 整数,使用内置减法,然后在结果上调用bin()转换回二进制字符串。 -
你的代码是基于this answer的二进制求和,对吧?
-
@augurar:你误解了我的问题。我希望 user2328079 重新考虑他的方法,因为我不明白。