微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的二进制减法程序似乎不适用于一个特定值

如何解决我的二进制减法程序似乎不适用于一个特定值

所以我正在制作这个减法程序,真的不知道为什么它不适用于这两个值。对于其他每个而言,它还能工作吗?

def binmin(x,y):
    lenx = len(x)
    leny = len(y)
    x1 = list(x)
    y1 = list(y)
    difference= 0
    one = 0
    result = ""
    for i in range(len(x)):
        difference = str((int(x1[lenx - 1 - i])) - int(y1[leny - 1 - i]))
        if difference == "-1":
            difference = 2 - int(y1[leny - 1 - i])
            one = 1
        
        elif difference == "-2":
            one = 1
            difference = 0

        else:
            one = 0

        y1[leny - i - 2] = int(y1[leny - i - 2]) + one

        result = str(difference) + str(result)

    return result

print(binmin("11110000","00010001"))

解决方法

更改:

if difference == "-1":
    difference = 2 - int(y1[leny - 1 - i])
    one = 1

收件人:

if difference == "-1":
    difference = 1
    one = 1

difference最初是"-1"时,您需要借用,因此您可以有效地将2添加到差额中。由于差异最初是-1,因此您希望2-1 = 1来获得新的差异。

原始调整仅在int(y1[leny - 1 - i])1的情况下才有效,如果先前已通过较早的借阅进行了调整(在这种情况下可能为2)则可能不起作用。 / p>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。