不用中间变量实现数值交换
· 阅读需 2 分钟
介绍三种不用中间变量实现数值交换的方法,
1. 加减法
假设有变量
let a = 2, b = 5
交换
a = a + b // a = 7
b = a - b // b = 2
a = a - b // a = 5
缺点:
- 只能处理数值
- 数值太大相加的时候可能会溢出
2. 乘除法
有加减法那么就自然可以联想得到乘除法:
a = a * b // a = 10
b = a / b // b = 2
a = a / b // a = 5
缺点:
- 会有精度损失
- 被除数不能为 0
3. 异或法
异或是一种数学运算,不同为 1,相同为 0:
结果 | ||
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
在计算机中进行异或运算,需要先把数值换算成二进制,a
的二进制为 010
,b
的二进制为 101
a = a ^ b // 010 ^ 101 = 111
b = a ^ b // 111 ^ 101 = 010
a = a ^ b // 111 ^ 010 = 101
缺点:
- 无法处理浮点型变量
总结
三种方法都是奇技淫巧,仅供学习使用,生产环境最好不要用。