XOR执行什么数学运算?
Answers:
XOR是二进制运算,它表示“异或”,也就是说,如果仅精确地设置了一位,则结果位的值等于1。
这是它的功能表:
a | b | a ^ b
--|---|------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
在数字的每两个对应位之间执行此操作。
示例:7 ^ 10
在二进制文件中:0111 ^ 1010
0111
^ 1010
======
1101 = 13
属性:该运算是可交换的,关联的和自反的。
它也与加模2相同。
^
是的Python的按位异或运算符。这是您XOR
在python中拼写的方式:
>>> 0 ^ 0
0
>>> 0 ^ 1
1
>>> 1 ^ 0
1
>>> 1 ^ 1
0
XOR代表异或。它用于密码术,因为它使您可以使用掩码在可逆操作中“翻转”位:
>>> 10 ^ 5
15
>>> 15 ^ 5
10
5
面具在哪里?(输入XOR掩码)XOR掩码再次为您提供输入。
有关XOR操作的更多信息。
有一两件事,其他的答案不提这里是XOR负数-
a | b | a ^ b
----|-----|------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
使用上面的功能表您可以很容易地理解XOR的工作原理,但是并不能说明它如何处理负数。
由于此问题也被标记为python,因此我将牢记在心。该XOR( ^
)是一个逻辑运算符,将返回1,当位是不同的,并且在其他地方0。
负数以二进制补码形式存储在二进制中。以2的补数表示,最左边的位保留用于值的符号(正或负),并且不影响数字的值。
在Python中,负数用前导1而不是前导0编写。所以,如果你使用的是只有8位二进制补码 数,那么你从治疗模式
00000000
,以01111111
作为整个数字从0到127,和储备1xxxxxxx
写负数。
考虑到这一点,让我们通过一个例子来了解XOR如何对负数进行运算。让我们考虑表达式- ( -5 ^ -3 )
。
-5
可以视为1000...101
和-3
可以视为1000...011
。在这里,...
表示全0,其数量取决于表示所用的位(32位,64位等)。所述1
在MSB(最高有效位)表示由二进制表示所表示的数是负的。异或运算将照常在所有位上完成。
-5 : 10000101 |
^ |
-3 : 10000011 |
=================== |
Result : 00000110 = 6 |
________________________________|
∴ -5 ^ -3 = 6
由于在XOR运算后MSB变为0,因此我们得到的结果数为正数。同样,对于所有负数,我们考虑使用2的补码(最常用的一种)以二进制格式表示它们,并对它们的二进制表示进行简单XOR。
下表对于确定结果的符号可能很有用。
a | b | a ^ b
------|-------|------
+ | + | +
+ | - | -
- | + | -
- | - | +
对于负XOR运算,XOR的基本规则也保持不变,但是某天某人对XOR运算如何真正以负数进行工作可能会有所帮助。
的另一个应用XOR
是在电路中。它用于对位求和。
当您查看真值表时:
x | y | x^y
---|---|-----
0 | 0 | 0 // 0 plus 0 = 0
0 | 1 | 1 // 0 plus 1 = 1
1 | 0 | 1 // 1 plus 0 = 1
1 | 1 | 0 // 1 plus 1 = 0 ; binary math with 1 bit
您会注意到,XOR
x的结果是与y相加的,而无需跟踪进位,而是从AND
x和y之间获得进位。
x^y // is actually ~xy + ~yx
// Which is the (negated x ANDed with y) OR ( negated y ANDed with x ).
当将(^)XOR运算符应用于两个不同的位(0和1)时,它会生成1。当它应用于两个相同的位(0和0或1和1)时,它将生成0。