目录
一、不使用临时变量交换两个整数变量的值
设有 int a=2 , b=3,则
1.加减法交换
a = a+b;
b = a-b;
a = a-b;
2.乘除法交换
a = a*b;
b = a/b;
a = a/b;
3.二进制异或交换(效率最高)
a = a∧b;
b = a∧b;
a = a∧b;
三种交换方法里,第三种方式效率最高,因为使用了二进制计算,众所周知,计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示,因此现代计算机都采用二进制存储的方式设计计算机,而第三种方式直接使用了二进制运算,在物理计算层面实现速度几乎不需要耗费时间,因此在现阶段的二进制设备上二进制计算的效率是最高的。
第三种运算过程
首先 a的二进制是10 , b的二进制是11。
∧异或:指的是二进制计算符号,将二进制数的每个相对应的位进行异或运算,若相同就得0,不同就得1,如101 和 110 异或运算得011
要计算的数 | a的当前值 | b的当前值 | 结果 |
初始值 | 10 | 11 | / |
a | 10 | 11 | 01 |
b | 01 | 11 | 10 |
a | 01 | 10 | 11 |
变量a最终结果为11,即十进制3,b变量最终结果为10,即2,实现了交换
二、用最有效率的方法计算2乘以8
2<<3
同上解释,最有效率的计算使用二进制计算方式,2 << 3, 2的二进制数是10, 2左移三位,相当于乘以了2的三次方,由二进制数10,变成二进制数10000 , 即16。