单个值的按位异或校验和?

我正在为数组做一个按位校验和。


0^1^2^3^4^6 == 2.


17^18^19^20^21^22^23^25^26^29 == 14.


12^ == ?

但是,有时可能存在单个值。


对于单个值,数组校验和的等效值是多少?


浮云间
浏览 140回答 1
1回答

红颜莎娜

总结: 对于任何 ,这就是为什么 12 的结果等于 ,即 12。X^0 == XX12^0我在数学上并不精确,但对于一个操作,可能存在一个什么都不做的“中性”值:对于加法,它是0:X+0 == X对于乘法,它是1:X*1 == X对于 AND(逻辑,按位)它是或位值 1True等。您始终可以插入中性值,而无需更改结果。这意味着例如,空数字列表的总和为0,乘积为1。您自然会将该值用作 or 实现中的起点:sum(alist)product(alist)total = 0; for x in alist: total = total + xprod = 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python