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

二进制减法-Python

如何解决二进制减法-Python

s1[i] == s2[i]和时,您的代码错误carry == 1

你应该调整你的代码有三个独立的情况下s==-1s==0s==1,然后分支上的价值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:
        ...

这样,您就每种可能性都有一个单独的障碍,因此没有机会像您初次尝试那样忽略一个案例。

解决方法

我想做一个二元计算器,减法部分有问题。这是我的代码(我尝试将其修改为我在本网站上找到的总和)。

    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]

该程序在执行某些二进制减法后可以正常工作,但在其他情况下则无法运行。有人可以帮我,因为我找不到错误吗?非常感谢。

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