应用位异或交换两个变量的值

来源:互联网 发布:音响 知乎 编辑:程序博客网 时间:2024/05/22 16:45

我们知道在程序语言中都有 "^"表示异或,但是我们用到的很少,下面是以Golang语言为例,将a,b的值互换

package mainimport "fmt"//noinspection ALLfunc main() {   var a int = 2   var b int = 4   if ( a != b) {      // 1.相当于a = a^b,其实就是(a = 10 ^ 100)      a ^= b      //2.相当于 b = b^a,根据第1步知道 a = a^b,那么下面的等式又可表示为 b =  b^b^a,其实一个数异或自己就是0,任何数和0异或就是他本身      //此时就相当于b = 0^a,所以b = a,这里的a就是我们开始定义的 var a int = 2      b ^= a      //3.a = a^b  可以推导的是=>a = (a^b)^(b^b^a),因为根据第一步我们知道a = a^b 根据第2步我们知道b = b^(b^a),可以得到的结果就是      //a = b,这里的b就是最初我们定义var b int = 4,      a ^= b      fmt.Println(a, b)   }}

当然程序打印出来的也是: