关于交换两个数的位置
在平时开发过程中,常常会遇见交换两个数的位置的时候,使用的方法有如下:
第一时间能想到的方法:临时变量来存值
第二时间想到的:加减运算来交换(只能针对数字)
第三时间会想到:利用数组来交换
第四时间会想到的:ES6解构赋值
最优秀的交换:异或(针对数字)
关于异或的原理:
首先我们需要知道:
- 异或就是不相等的位为1,相等的位为0 ——1 ^ 0=1 1 ^ 1=0 0 ^ 0=0
- 一个数异或自己就会等于0 —— X ^ X = 0
- 一个数跟0异或会等于本身 —— X ^ 0 =X
var x=9 // 二进制 1001
var y=7 // 二进制 0111
x=x^y // 此时x=x^y后的值
y=x^y // 此时x已经等于x^y了,这个表达式相当于y=x^y^y
x=x^y // 此时x已经等于x^y,y已经等于x,这个表达式相当于 x=x^y^y