2011-06-21 62 views
2

任何人都可以用一個很好的例子來解釋這個運算符嗎?什麼是C#獨佔或`^`用法?

我知道這個操作符是什麼。我的意思是一個真實的例子。

+3

簡單搜索: https://secure.wikimedia.org/wikipedia/en/wiki/Exclusive_or – thekip

+0

我在我的回答給了3。維基頁面上大約有十幾個。 –

+2

在我的整個編程生涯中,我第一次找到了XOR運算符的用法。擁有^ for Math.Pow()會更好地使用符號。 –

回答

8

它是邏輯操作exclusive disjunction

http://en.wikipedia.org/wiki/Exclusive_or

異或通常用於位操作的實現。實例:

  • 1 XOR 1 = 0
  • 1 XOR 0 = 1
  • 0 XOR 1 = 1
  • 0 XOR 0 = 0
  • 1110 XOR 1001 = 0111(這等效於加上不帶進位)

如上所述,由於獨佔析取與加法模2相同,所以兩個n位串的按位異或是與addi的標準向量相同在矢量空間(Z/2Z)^ 4中。

在計算機科學,邏輯異或有幾種用途:

  • 它講述了兩個位是否是不平等的。
  • 它是一個可選的位翻轉器(決定輸入選擇是否反轉數據輸入)。
  • 它告訴是否有奇數的1位(如果奇數個變量爲真,則爲真)。

(和整個噸其他用途)

2

當使用XOR,該語句只計算結果爲真,如果只比較語句之一是真實的。所以:

bool foo = true; 
bool bar = false; 
if (foo^bar) { bar = true; // this evaluates to true } 
if (foo^bar) { // This evaluates to false, since both statements are now true. } 
0

編程語言的引用始終是查找運算符定義的最佳位置。

在這種情況下,MSDN是C#操作符最合適的定義。

根據the documentation

二進制^運營商預定義 整型和布爾。對於 整型,^計算其操作數的異或運算。對於bool 操作數,^計算邏輯 排除或其操作數;即 只有當其中一個操作數爲真時 結果爲真。

也列出了一個例子。

4

例如,像這樣:

var result = a^b; 

result   a  b 
-------------------------------- 
true   true false 
true   false true 
false   true true 
false   false false 
0

XOR是一種常見的布爾運算符並沒有任何獨特的在C#。 我建議閱讀一些關於布爾代數的知識,瞭解其用於1位的內容, 然後檢查當你做了什麼(異或b)與任何兩個數字或字符a和b的XOR b。

2

對於「唯一或」評估爲真,且只有一個操作數必須爲真。

foo^bar 

相當於

(foo && !bar) || (!foo && bar)