【发布时间】:2017-03-24 14:40:29
【问题描述】:
我无法达到预期的输出。我正在尝试使用 AND、XOR 和 OR 等逻辑运算符创建一个字节加法器。我已经从代码中提取了重现问题所需的最少代码,因此假设 finalfirstvalue = "1010" 和 finalsecondvalue = "0101"。
secondvalueindex = (len(finalsecondvalue) - 1)
carry, finalans = False, []
for i in range(-1, -len(finalfirstvalue) - 1, -1):
andone = (bool(finalfirstvalue[i])) & (bool(finalsecondvalue[secondvalueindex]))
xorone = (bool(finalfirstvalue[i])) ^ (bool(finalsecondvalue[secondvalueindex]))
andtwo = (bool(carry)) & (bool(xorone))
xortwo = (bool(carry)) ^ (bool(xorone))
orone = (bool(andone)) | (bool(andtwo))
carry = (bool(orone))
finalans.append(xortwo)
secondvalueindex -= 1
answer = ''.join(str(e) for e in finalans)
print (answer)
实际输出:FalseTrueTrueTrue
预期输出:TrueTrueTrueTrue
然后代码会变回零和一。
因为它缺少一个布尔值,我觉得问题出在我的索引上。虽然我已经玩过它并且没有任何运气。
我需要对开头提到的两个变量进行这些操作,但是对于最右边的元素,然后向左移动一个以进行下一个循环,依此类推。
【问题讨论】:
标签: python-3.x binary byte add