什么是异或和?

问题描述 投票:0回答:1

我不确定这个术语的准确定义。

我知道按位异或运算是逐位进行并按位置对相应位进行异或。这个结果称为“异或和”吗?如果不是,什么是异或和,以及如何使用异或来实现此加法?

c bit-manipulation bit xor
1个回答
64
投票

按位异或运算:

a   b   a^b
-----------
0   0    0
0   1    1
1   0    1
1   1    0 

异或和是指对整数进行连续的异或运算。
假设您有从

1
N
的数字,并且您必须找到它们的异或和,那么对于
N = 6
,异或和将是
1^2^3^4^5^6 = 7

1 = 001,  2 = 010,   3 = 011,   4 = 100,   5 = 101,   6 = 110  

 1^2          = 1^2  = 001^010 = 011 = 3  
(1^2)^3       = 3^3  = 011^011 = 000 = 0
(1^2^3)^4     = 0^4  = 000^100 = 100 = 4
(1^2^3^4)^5   = 4^5  = 100^101 = 001 = 1
(1^2^3^4^5)^6 = 1^6  = 001^110 = 111 = 7 --> XOR sum
 

温馨提示:

在进行异或求和时请记住这些异或运算的基本规则:

  • 0^a = a
    (例如
    0^3 = 3
  • a^a = 0
    (例如
    3^3 = 0
  • 异或运算是累积的(交换并不重要)。
    a^b
    =
    b^a
  • XOR 运算是关联的(分组并不重要)。
    (a^b^c)
    =
    (a^b)^c
    =
    a^(b^c)

上述规则的应用示例:

  • 1^2^1 = (1^1)^2 = 0^2 = 2
  • (1^2^1) ^ (1^2) = (1^2)^(1^2) ^ 1 = 0^1 = 1

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.