这是我在一个晚修时无聊时想到的,我称他为保留数据式交换(没什么技术含量,看看思路即可)
解释就是把两个数通过特定的方法结合起来,然后我们可以通过其中一个值求出另一个值
方法:1.+
2.-
3.*
4./
当然最好的还是 ^
注意:像 % & | 这样会舍去数据的无法进行交换
1.+
//a=1,b=2 a+=b;//a=a+b=1+2=3 b=a-b;//b=a-b=3-2=1 a-=b;//a=a-b=3-1=22.-
//a=1,b=2 a-=b;//a=a-b=1-2=-1 b+=a;//b=a+b=-1+2=1 a=b-a;//a=b-a=1-(-1)=23.*
//a=2,b=3 a*=b;//a=a*b=2*3=6 b=a/b;//b=a/b=6/3=2 a/=b;//a=a/b=6/2=34./
//a=2.0,b=3.0 这里要用double或float a/=b;//a=a/b=2/3 b*=a;//b=a*b=2/3*3.0=2.0 a=b/a;//a=b/a=2.0/(2/3)=3.05.^ 压轴戏(永远不丢失数据)
注:用括号里面的为二进制数
这也是我认为的最优的解
原因:1.它在二进制中转换,而其他的都是在十进制的基础完成,理论来说会快一点(因为不考虑进位等)
2.他不会爆 如果两个十进制相加(加减乘除都可能出现这种情况)的话可能会爆出范围,要用高精...