为什么我得到的是r=[17, 18, 19, 20, 21, 22, 25, 26, 27, 29]2而不是14的xor [关闭] 。

问题描述 投票:-3回答:1

以下是我试图找出列表元素的xor的代码。

r = [17, 18, 19, 20, 21, 22, 25, 26, 27, 29]
result = 0
for x in r:
    result ^= x

print (result)
python list xor
1个回答
1
投票

为什么不应该是2呢? 我对你的代码进行了中间二进制结果的检测,所有发出的二进制XOR操作看起来都是正确的结果。

r = [17, 18, 19, 20, 21, 22, 25, 26, 27, 29]
result = 0
for x in r:
    print("{0:05b} XOR".format(result))
    print("{0:05b}".format(x))
    result ^= x
    print("-----")
    print("{0:05b}\n".format(result))

print (result)

所有的二进制XOR操作看起来都产生了正确的结果。你可以随意运行它并检查这些结果。

主要的启示不是说2是正确的结果,而是你可以在你的代码中添加仪器,帮助你说服自己算法是正确的(或者发现其中的错误)。

© www.soinside.com 2019 - 2024. All rights reserved.