二进制数加法

       题目: a = '110110010101010010100010111111001'       b = '1010011001011111101110100111' , a和b代表两个二进制数。我们按照二进制数运算法则 将a和b加起来  。。。也就是加起来等于2需要进位。。

分析: 

       这道题目非常简单,从a和b的末尾一次相加,等于2进位,否则将加的结果放在对应的位置。不做过多解释。  看代码实现。

代码实现:

def binary_add(a, b):
    a = list(a)
    b = list(b)
    i = len(a) - 1
    j = len(b) - 1
    sum, temp = 0, 0
    result = []
    while i >= 0 or j >= 0:
        sum = temp
        if i >= 0:
            sum += int(a[i])
            i -= 1
        if j >= 0:
            sum += int(b[j])
            j -= 1
        result.insert(0, sum % 2)
        temp = sum // 2
    return result


if __name__ == '__main__':
    a = '110110010101010010100010111111001'
    b = '1010011001011111101110100111'
    # a = '10101'
    # b = '111'
    result = binary_add(a, b)
    print(result)

输出结果: