XOR定义(这句话是让标题可以接受的)

问题描述:

可能重复:
What does ‘^’ do in c# (Enums)?XOR定义(这句话是让标题可以接受的)

这可能是一个noobish问题,而是......无处没看到什么异或手段在C++或C#中。我认为这可能意味着和/或如果确实如此,我很聪明,这是一个盲目的猜测= D。我现在使用C#,但我很确定xor的意思是一样的。问题是 - 我不知道异或的含义。我知道xor是由^代表的。我也想知道^^是什么意思。

+2

的许多问题,包括[?什么是 '^' 做在C#(枚举)(http://*.com/questions/234776/what-does复制-do-in-c-enums)=和[^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (http://*.com/questions/1508153/is-the-operator-really-the-xor-operator-in-c)。 – 2010-07-14 05:03:10

+1

你应该把你的标题改为“在C++/C#中异或(^)是什么意思?”或类似的东西。 (尽管我认为XOR在所有语言中都是相同的):D – Dian 2010-07-14 05:14:27

谷歌搜索“define:xor”会指向您所有知识的源泉http://en.wikipedia.org/wiki/Xor。读这会给你的洞察力,以什么异或(XOR)表示:)

古德勒克

[编辑] 而只是为了澄清,XOR并不意味着和/或,对不起。 xor的定义是独立于编程语言的。

+2

没有'^^',因为它不能做短路,'!='和'^'都可以作为非短路布尔XOR。 – 2010-07-14 05:05:30

+0

......除非你的语言没有严格的布尔值。 – dan04 2010-07-14 06:07:57

XOR代表'异或OR'。 只有其中一个参数为真,而不是两者都是唯一或操作结果为真。

具有1为真值,而0为假,按位运算的值给出时1仅在对应位置中的一个比特是1。

异或两个比特之间表示该结果是1,如果一个且只有一个位是1

的真值表是:

| 0 | 1 
---+---+--- 
0 | 0 | 1 
1 | 1 | 0 

当你谈论异或一个较大的值,它只是把每一位一次一个,所以:

1111 0000 
xor 1010 1010 
    ---- ---- 
    = 0101 1010 

对于它的价值,二进制操作的完整列表:

  • and,1只有当它的两个输入都是1,否则为0。
  • or,0只有当它的两个输入均为0 ,否则1.
  • xor,1只有当其输入端之一(不是两个)为1,否则为0。
  • not,1仅当它的输入为0,否则1.

而事实表:

and| 0 | 1  or| 0 | 1  xor| 0 | 1  not| 0 | 1 
---+---+--- ---+---+--- ---+---+--- ---+---+--- 
0 | 0 | 0  0 | 0 | 1  0 | 0 | 1  | 1 | 0 
1 | 0 | 1  1 | 1 | 1  1 | 1 | 0