关于交换两个数的位置
在平时开发过程中,常常会遇见交换两个数的位置的时候,使用的方法有如下:
第一时间能想到的方法:临时变量来存值

第二时间想到的:加减运算来交换(只能针对数字)

第三时间会想到:利用数组来交换

第四时间会想到的: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
本文探讨了在软件开发中常见的数值交换技巧,包括使用临时变量、加减运算、数组、ES6解构赋值及异或操作。重点介绍了异或交换的原理,通过实例演示了如何利用异或特性实现两数交换,而无需额外内存。
1004

被折叠的 条评论
为什么被折叠?



