2013-02-23 143 views
6

不好意思問這樣一個簡單的問題,但這些事情很難谷歌。^在目標c ios中是什麼意思?

我有iOS中的代碼連接到切換攝氏和華氏之間切換,我不知道^ 1的含義。 self.celsius是布爾

感謝

self.celsius = self.celsius^1; 
+0

它是指按位異或運算符。 看看這個:http://stackoverflow.com/questions/1912023/caret-in-objective-c – lakesh 2013-02-23 13:30:04

+0

提示:當你遇到這樣的問題時,不要谷歌的Objective-C,只是Google的「C」(當然還有其他適當的術語,比如「運營商」)。 – 2013-02-23 13:31:03

+1

你爲什麼要這樣做,而不是'self.celsius =! self.celsius'這只是令人困惑的權利? – Robert 2013-02-23 13:34:40

回答

8

這是一個C語言的操作符的意思是 「按位異或」。

Wikipedia給出了一個很好的解釋:

XOR

甲按位異或取相同長度的兩個位模式和每對相應比特執行 邏輯異或運算。如果只有第一位爲1或只有第二位爲1,則每個位置的結果爲1,但如果兩者均爲0或兩者均爲1,則將爲0.在此,我們 執行兩位比較,即1如果兩位是 不同,如果它們相同則爲0。例如:

0101 (decimal 5) 
XOR 0011 (decimal 3) 
    = 0110 (decimal 6) 

的按位異或,可以使用在寄存器 (也稱爲肘節或翻轉)以反轉所選擇的位。任何位可以通過與 1異或來切換。例如,給定位模式0010(十進制2),第二和第四位可以通過位模式 按位異或來切換,所述位模式在第二和第四位置包含1:

0010 (decimal 2) 
XOR 1010 (decimal 10) 
    = 1000 (decimal 8) 
+0

感謝您的解釋 – 2013-02-23 13:34:55

1

這是一個異或操作。