我正在为数组做一个按位校验和。0^1^2^3^4^6 == 2.17^18^19^20^21^22^23^25^26^29 == 14.12^ == ?但是,有时可能存在单个值。对于单个值,数组校验和的等效值是多少?
1 回答

红颜莎娜
TA贡献1842条经验 获得超13个赞
总结: 对于任何 ,这就是为什么 12 的结果等于 ,即 12。X^0 == X
X
12^0
我在数学上并不精确,但对于一个操作,可能存在一个什么都不做的“中性”值:
对于加法,它是0:
X+0 == X
对于乘法,它是1:
X*1 == X
对于 AND(逻辑,按位)它是或位值 1
True
等。
您始终可以插入中性值,而无需更改结果。这意味着例如,空数字列表的总和为0,乘积为1。您自然会将该值用作 or 实现中的起点:sum(alist)
product(alist)
total = 0; for x in alist: total = total + x
prod = 1; for x in alist: prod = prod * x
回到你的问题,XOR的中性值为0。我们将xor写为:
def xor(*args):
result = 0
for x in args:
result ^= x
return result
然后:
>>> xor(17,18,19,20,21,22,23,25,26,29)
14
>>> xor(0,1,2,3,4,6)
2
>>> xor()
0
>>> xor(12)
12
添加回答
举报
0/150
提交
取消