为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

浮云间 2022-08-11 17:10:44
我正在为数组做一个按位校验和。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 == 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 + 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


查看完整回答
反对 回复 2022-08-11
  • 1 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号