python中xor是什么_有人可以在Python 3中解释XOR(用于校验和)

本文介绍了Python中的XOR运算符在校验和计算中的作用,特别是在一个名为Foo.Bar的练习问题中。练习要求根据给定的工人ID列表生成与安全检查点相同的XOR校验和。通过举例说明了如何计算这种校验和,解释了异或运算的二进制工作原理,并提供了计算校验和的思路。
摘要由CSDN通过智能技术生成

我正在为foo.bar进行练习,其基本思想是获取一个整数列表,并对它进行一些操作以得出该列表的特定子集,然后通过以下方式对这些值进行XOR(对于校验和):

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

等于2

另一个例子:

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

等于14

我不太确定这里发生了什么以及这些值(2,14)是如何得出的。

Foo.Bar的问题的实际描述

>待办事项

您几乎已经准备好销毁LAMBCHOP世界末日设备,但是保护LAMBCHOP底层系统的安全检查点将成为一个问题。您能够在不触发任何警报的情况下停下来,这真是太好了!除了作为Lambda指挥官的助手之外,您已经了解到检查点即将受到自动审查,这意味着您的破坏活动将被发现并且封面被炸掉-除非您可以欺骗自动审查系统。

要欺骗系统,您需要编写一个程序以返回与警卫检查完所有工作人员之后相同的安全校验和。幸运的是,兰姆达指挥官对效率的渴望不允许长时间的排队,因此检查站后卫已经找到了提高通过率的方法。警卫人员没有检查每一个经过的工人,而是在注意他们的安全ID的同时检查了所有排队的人,然后允许排队补齐。一旦他们做完了,他们就会再次越过生产线,这次离开最后一个工人。他们继续执行此操作,每次都在该行中再派一名工人,但要记录他们要检查的人员的安全ID,直到他们跳过整行为止,然后,他们将记录下来的所有工人的ID与X校验和,然后起飞吃午饭。幸运的是,工人的井然有序的性格使他们始终按数字顺序排列,没有任何缝隙。

例如,如果该行中的第一个工作程序具有ID 0,并且安全检查点行包含三个工作程序,则过程如下所示:

0 1 2 /

3 4/5

6/7 8

守卫的XOR(^)校验和为0 ^ 1 ^ 2 ^ 3 ^ 4 ^ 6 == 2。

同样,如果第一个工作程序具有ID 17,并且检查点包含四个工作程序,则该过程将如下所示:

17 18 19 20 /

21 22 23/24

25 26/27 28

29/30 31 32

产生校验和17 ^ 18 ^ 19 ^ 20 ^ 21 ^ 22 ^ 23 ^ 25 ^ 26 ^ 29 == 14。

所有工作程序ID(包括第一个工作程序)都在0到2000000000之间(含0和2000000000),并且检查点行的长度始终至少为1个工作程序。

使用此信息,编写一个函数答案(开始,长度),通过输出警卫通常在午餐前提交的相同校验和来覆盖丢失的安全检查点。在进行自动检查之前,您有足够的时间找出要检查的第一个工作程序的ID(开始)和行的长度(长度),因此您的程序必须仅使用这两个值来生成正确的校验和。

测试用例

输入:

(int) start = 0

(int) length = 3

输出:

(int) 2

输入:

(int) start = 17

(int) length = 4

输出:

(int) 14

解决方案

按位运算的基本思想是,每个数字在计算机内部以2为底的二进制格式表示。二进制运算符使用此数字表示法进行计算。

如果应用操作(如xor^,和&或或|),则使用此表示形式。

二进制数是这样表示的,可以转换为十进制表示形式(反之亦然):0b1101 = 1 + 4 + 8 = 13

其中每一位代表2的幂。

当对两个数进行异或运算时,例如0b1100和0b1010,您将创建一个新的数,只设置了那些在两个参数中不相同的位

0b1100 ^ 0b1010 = 0b0110

从您的具体示例:0^1^2^3^4^6 == 2

0^1 = 0b0000^0b0001 = 1

1^2 = 0b0010^0b0001 = 3

3^3 = 0b0011^0b0011 = 0

0^4 = 0b0000^0b0100 = 4

4^6 = 0b0100^0b0110 = 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值