求大神帮我看看画圈的是怎么回事,理解不了后面的注释啊。
a = a^b,“^”这是异或,先把a和b的值转化为二进制,然后再进行异或,异或规则:同为0,不同为1.
^异或运算符(当两个数字不同时为1,其余为0)
a第一次的值是a=3 b=5
a=a^b 执行这行代码之后 a=3^5 b=5
3的二进制是 0000 0011
5的二进制是 0000 0101
3^5 = 0000 0110 =6
所以此时 a=3^5 也可以说=6
b=a^b 执行这行代码之后 a=3^5 b=(3^5)^5
6的二进制是 0000 0110
5的二进制是 0000 0101
b=(3^5)^5 = 6^5 = 0000 0011 = 3
a = a^b;
b = (a^b)^b = a^(b^b) = a^0 = a;
a = (a^b)^a = b;
这个是进行a和b之间的数值交换