这个问题已经在这里有一个答案:
- 什么是^运营商做一个BOOL? 7个回答
对不起,问这样一个简单的问题,但这些东西是很难给谷歌。
我在iOS的代码连接到切换这是摄氏和华氏之间切换,我不知道是什么^ 1手段。 self.celsius是布尔
谢谢
self.celsius = self.celsius ^ 1;
这个问题已经在这里有一个答案:
对不起,问这样一个简单的问题,但这些东西是很难给谷歌。
我在iOS的代码连接到切换这是摄氏和华氏之间切换,我不知道是什么^ 1手段。 self.celsius是布尔
谢谢
self.celsius = self.celsius ^ 1;
这是一个C语言的操作符的意思是“按位异或”。
维基百科给出了很好的解释:
XOR
甲按位异或取相同长度的两个位模式,并进行逻辑异或运算的每对相应比特。 在每个位置上的结果是1,如果仅第一比特是1或仅第二位是1,但将是0,如果两者都是0或都是1。在此,我们执行两个比特的比较,如果这两个是1位是不同的,和0,如果它们是相同的。 例如:
0101 (decimal 5)
XOR 0011 (decimal 3)
= 0110 (decimal 6)
按位XOR,可以使用在寄存器中(也称为肘节或翻转)以反转所选择的位。 任何位都可以通过用1。例如,异或它给定的位模式0010(十进制2)在第二和第四位可通过按位异或与含有在所述第二和第四位置1的位模式进行切换来切换:
0010 (decimal 2)
XOR 1010 (decimal 10)
= 1000 (decimal 8)
这是按位异或运算符(见http://www.techotopia.com/index.php/Objective-C_Operators_and_Expressions#Bitwise_XOR )。
它在做什么在这种情况下是来回切换,因为0 ^ 1
为1,和1 ^ 1
为0。
这是一个异或操作。