以前交换两个数值总是这样做的:
代码语言:javascript复制temp = b
b = a
a = temp
这可是万年不变老方法了,可是emm多了一个变量出来总是不爽的。毕竟占了内存嘛。强迫症犯了,那该怎么办?刚学到位运算符,发现可以很巧妙地解决这个问题
代码语言:javascript复制a ^= b
b ^= a
a ^= b
这个怎么理解哇?这里用到了按位异或运算符。也就是如果对应的二进制位值相同,那么结果为0,否则为1
嗯有点感觉了,再看看这三行代码
我们知道任何数与自身异或均为0,0与任何数异或均为他自身
这里就是应用了这个原理
第一行代码 a = a^b
第二行展开来就是b = b^a = b(原)^a(原)^b(原)=a(原)
b(原)^b(原)是0,那么二进制结果就是a(原)了嘛
同样道理,第三行展开来就变成了 a = a(原)^b(原)^a(原)=b(原)
这样就实现了两个数值的交换了,而不用占用更多的内存空间,逼格就上来了