我想制作一个二进制计算器,但是在减法部分遇到了问题。这是我的代码(我尝试了适应我在这个网站上找到的求和的代码)。
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:]
。该函数用于二进制数的减法运算,将两个二进制字符串作为参数传入,返回它们的差的二进制表示形式。 - kindallint(s, 2)
将二进制字符串s
转换为 Python 整数,使用内置减法,然后在结果上调用bin()
将其转换回二进制字符串。 - augurar