ios_type ^ = 0x1,这是什么意思?

时间:2012-01-07 06:59:59

标签: objective-c c ios

  - (void)methedName{
      if(){
        _type ^=0x1;
      }
    }

这是什么意思?

3 个答案:

答案 0 :(得分:10)

你的问题和你的代码做了不同的事情。

0x1表示“1”被解释为十六进制数字。这恰好与十进制中的1相同。

因此_type =0x1只需将_type设置为1。

^表示XOR(异或)运算符。

^=表示使用右侧计算左侧的XOR,并将结果分配给左侧。换句话说,ios_type ^= 0x1ios_type = ios_type ^ 0x1相同。

因此ios_type ^= 0x1切换ios_type的1位。

答案 1 :(得分:4)

ios_type ^= 0x1

相当于

ios_type = (ios_type ^ 0x1)

它将ios_type设置为原始值XOR,并使用常数值1.也就是说,它会切换1位。

XOR(异或)真值表:

 INPUT    OUTPUT
 A   B    A XOR B 

 0   0      0
 0   1      1
 1   0      1
 1   1      0

参考:Exclusive OR

答案 2 :(得分:1)

它翻转ios_type的最低有效位,所以

10011010 ^ 00000001 ==> 10011011
10100111 ^ 00000001 ==> 10100110