2013-02-23 27 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

这是一个异或操作。