6

很抱歉问了这么简单的问题,但这些东西对谷歌来说很难。

我在 iOS 中有代码,它连接到在摄氏和华氏之间切换的切换,我不知道 ^ 1 是什么意思。self.celsius 是布尔值

谢谢

self.celsius = self.celsius ^ 1;
4

3 回答 3

8

这是一个 C 语言运算符,意思是“按位异或”。

维基百科给出了很好的解释:

异或

按位异或采用两个长度相等的位模式,并对每对相应位执行逻辑异或运算。如果只有第一位为 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)
于 2013-02-23T13:29:14.910 回答
2

这是按位 XOR 运算符(请参阅http://www.techotopia.com/index.php/Objective-C_Operators_and_Expressions#Bitwise_XOR)。

在这种情况下它正在做的是来回切换,因为0 ^ 1是 1 和1 ^ 10。

于 2013-02-23T13:29:43.093 回答
1

这是一个异或运算。

于 2013-02-23T13:29:23.233 回答