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



所以我正在制作这个减法程序,真的不知道为什么它不适用于这两个值。不过,对于其他每一个来说,它都有效吗?

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

最新更新