异或 ^ :
相同的为0,不同的为1
相同的为0,不同的为1
例如:
假设原来a,b的值如下:
a = 00000000 00000000 00000000 01100101
b = 00000000 00000000 00000000 10101011
假设原来a,b的值如下:
a = 00000000 00000000 00000000 01100101
b = 00000000 00000000 00000000 10101011
把a,b异或的结果赋给a:
a = a^b = 00000000 00000000 00000000 11001110
a = a^b = 00000000 00000000 00000000 11001110
再a去异或b,把结果赋给b:
(现在的a是新的值,是原来的a异或原来的b的结果)(b还是原来的b)
b = a^b = 00000000 00000000 00000000 01100101 --> 结果即原来的a
(现在的a是新的值,是原来的a异或原来的b的结果)(b还是原来的b)
b = a^b = 00000000 00000000 00000000 01100101 --> 结果即原来的a
再用a去异或b,把结果赋给a:
(现在的a还是新值的a)(现在的b是新的值,是新值的a异或原来的b的结果,也就是原来的a)
a = a^b = 00000000 00000000 00000000 10101011 --> 即原来的b
(现在的a还是新值的a)(现在的b是新的值,是新值的a异或原来的b的结果,也就是原来的a)
a = a^b = 00000000 00000000 00000000 10101011 --> 即原来的b
所以经过了
a=a^b;
b=a^b;
a=a^b;
之后,结果就是a,b的值交换了。也就是不借用第三个变量,实现两个值交换。
a=a^b;
b=a^b;
a=a^b;
之后,结果就是a,b的值交换了。也就是不借用第三个变量,实现两个值交换。
与运算 & :
只有都为1,结果才为1
只有都为1,结果才为1
或运算 || :
只要有1就为1
只要有1就为1
非运算 ~ :
取相反值
取相反值