Python 二进制加减

# 二进制+1
def add_binary_nums(x,y):
    max_len = max(len(x), len(y))

    x = x.zfill(max_len)
    y = y.zfill(max_len)

    result = ''
    carry = 0

    for i in range(max_len-1, -1, -1):
        r = carry
        r += 1 if x[i] == '1' else 0
        r += 1 if y[i] == '1' else 0
        result = ('1' if r % 2 == 1 else '0') + result
        carry = 0 if r < 2 else 1

    if carry !=0 : result = '1' + result

    return result.zfill(max_len)

# 二进制减1
def reduce_binary_nums(s1,s2):
    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]

猜你喜欢

转载自blog.csdn.net/wuhchengfei616/article/details/109130851
今日推荐