【问题标题】:Python Improve Binary algorithmPython改进二进制算法
【发布时间】:2022-10-06 22:44:34
【问题描述】:

所以在 uni 中,我们学习了如何将 2 个二进制代码相乘。在尝试了 Python 并获得了正确的结果之后,我想知道我是否可以用更少的 if 语句来改进我的代码,或者我是否在没有意识到的情况下犯了任何重大错误。

l1 = [1,1,0,1,1]
l2 = [1,0,0,0,0]
brack = 0

result = []
for i in range(len(l1)):
    if l1[i] + l2[i] == 2:
        result.append(0)
        brack +=1
    elif (l1[i] + l2[i] == 1) and (brack == 0):
        result.append(1)
    elif (l1[i] + l2[i] == 1) and (brack == 1):
        result.append(0)
        brack -= 1
    elif(l1[i] + l2[i] == 0) and (brack == 1):
        result.append(0)
        brack -= 1
    elif(l1[i] + l2[i] == 0) and (brack == 0):
        result.append(0)
if (result[-1] == 0):   
    result.append(1)      
    
print(result)
  • 这不是二进制加法吗?
  • 是 两个列表的二进制加法

标签: python binary


【解决方案1】:

您应该能够在没有任何 if 的情况下进行按位加法,而是使用模和除法:

l1 = [1,1,0,1,1]
l2 = [1,0,0,0,0]
brack = 0

result = []
for i in range(len(l1)):
    s = l1[i] + l2[i] + brack
    result.append(s % 2)
    brack = s / 2
if (brack >= 0):   
    result.append(1)      
    
print(result)

【讨论】:

    猜你喜欢
    • 2020-02-10
    • 2016-07-25
    • 2012-03-19
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    相关资源
    最近更新 更多