^(XOR)运算符有什么作用?

Hil*_*ark 55 python math

XOR执行什么数学运算?

pha*_*t0m 85

XOR是二进制运算,它代表"异或",也就是说,如果只设置了其中一个位,则结果位的计算结果为1 .

这是它的功能表:

a | b | a ^ b
--|---|------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
Run Code Online (Sandbox Code Playgroud)

该操作在数字的每两个相应位之间执行.

示例:7 ^ 10
二进制:0111 ^ 1010

  0111
^ 1010
======
  1101 = 13
Run Code Online (Sandbox Code Playgroud)

属性:操作是可交换的,关联的和自反的.

它也与加法模2相同.

  • 谢谢!!我希望我早些时候问过-今天早上差点让自己发疯。感谢您确保我度过一个愉快的下午! (2认同)
  • 它也与加模2相同。-这是什么意思? (2认同)

Mar*_*ers 39

^ Python的按位异或运算符.这是你XOR在python中拼写的方式:

>>> 0 ^ 0
0
>>> 0 ^ 1
1
>>> 1 ^ 0
1
>>> 1 ^ 1
0
Run Code Online (Sandbox Code Playgroud)

XOR代表异或.它用于密码学,因为它允许你在可逆操作中使用掩码"翻转"这些位:

>>> 10 ^ 5
15
>>> 15 ^ 5
10
Run Code Online (Sandbox Code Playgroud)

5面具在哪里; (输入XOR掩码)XOR掩码再次为您输入.

  • 真相表说实话 - 在谈话中我通常将XOR(eXclusive-OR,有时也称为EOR)描述为'A或B,但不是两者或两者都不'. (5认同)
  • 谢谢!!!你和其他受访者肯定让我在那天保持理智——我根本无法弄清楚,而且它是如此的无法通过谷歌搜索。 (2认同)

nag*_*547 9

关于异或运算的更多信息。

  • XOR 一个数字与它本身的奇数次结果是数字本身。
  • 与自身异或偶数次,结果为 0。
  • 此外,与 0 的 XOR 始终是数字本身。


Abh*_*ate 5

其他答案在这里没有提到的一件事是与负数异或-

 a  |  b  | a ^ b
----|-----|------
 0  |  0  |  0
 0  |  1  |  1
 1  |  0  |  1
 1  |  1  |  0
Run Code Online (Sandbox Code Playgroud)

虽然您可以使用上面的函数表轻松理解 XOR 的工作方式,但它并没有说明它将如何处理负数。


XOR 如何处理负数:

由于这个问题也被标记为 python,我将考虑到这一点来回答它。该XOR( ^)是一个逻辑运算符,将返回1,当位是不同的,并且在其他地方0。

负数以二进制形式存储为二进制补码。在 2 的补码中,最左边的位位置保留用于值的符号(正或负),并且对 number 的值没有贡献。

Python 中,负数用前导一而不是前导零书写。因此,如果您仅使用 8 位作为二进制补 码,那么您将模式从0000000001111111视为从 0 到 127 的整数,并保留1xxxxxxx用于写入负数。

考虑到这一点,让我们通过一个例子来理解 XOR 如何处理负数。让我们考虑表达式 - ( -5 ^ -3 )

  • 的二进制表示-5可以被认为是1000...101
  • 的二进制表示-3可以被认为是1000...011

这里,...表示全 0,其数量取决于用于表示的位(32 位、64 位等)。所述1MSB(最高有效位)表示由二进制表示所表示的数是负的。XOR 操作将像往常一样对所有位进行。

异或运算:

      -5   :  10000101          |
     ^                          | 
      -3   :  10000011          |  
    ===================         |
    Result :  00000110  =  6    |
________________________________|


     ? -5 ^ -3 = 6
Run Code Online (Sandbox Code Playgroud)

由于 XOR 运算后 MSB 变为 0,所以我们得到的结果数是一个正数。类似地,对于所有负数,我们考虑使用2 的补码(最常用的一种)以二进制格式表示它们,并对它们的二进制表示进行简单的 XOR。

结果MSB 位将表示符号其余位将表示 最终结果的值

下表可用于确定结果的符号。

  a   |   b   | a ^ b
------|-------|------
  +   |   +   |   +
  +   |   -   |   -
  -   |   +   |   -
  -   |   -   |   +
Run Code Online (Sandbox Code Playgroud)

XOR 的基本规则对于负 XOR 运算也保持不变,但该运算在负数中的实际工作方式可能对某人有用。