您的位置:首页 > 编程语言 > Java开发

5,javase代码实战-运算符——位运算实现两个变量的互换及其他方式(四)

2018-02-25 10:36 489 查看
问题介绍:

在程序经常用到两个变量的互换,特别是在基于交换原理的排序算法中,如果需要大量的交换,那么高效的交换两个变量,无疑会提高程序的效率。

可以使用异或运算符来实现。

实现代码:

idea1(1, 2);
public static void idea2(int a,int b){
a =a^b;
b =b^a;
a =a^b;
System.out.println("a是:"+a);
System.out.println("b是:"+b);
}




总结:^ 有一个特点就是 a^a = 0 即自身和自身异或为0。三行代码中,第一行为第二行提供服务。第一行和第二行为第三行提供服务。执行第二行 b=b^a 也就是 b =b^a^b 因为b^b=0 所以 b= a;执行第三行 a =a^b 也就是a=a^b^a 即a =b 。

扩展:

其他方法1:利用加减运算符实现

a =a+b;
b =a-b;
a =a-b;


利用上面异或的分析方法,就可以理解了。这也是一种很好的方法,起码不使用辅助变量。

其他方法2 ,使用辅助变量【不建议使用】

int c =0;
c=a;
a=b;
b=c;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java