分析一下最简单高效的整数互换方式

来源:互联网 发布:北京骏溢至信 淘宝 编辑:程序博客网 时间:2024/05/16 09:54

正好有空,分析一下之前看到过的整数交换的最高效的方式,打算以后一直采用这种方式了。经验证,负数也是没问题的,可以放心使用。

原理:异或操作可以得到两个数间的差异信息,两个数各自结合差异信息即可得到对方的值。

/** * Created by Json Wan on 2017/10/7. * Description:异或操作可以得到a,b间的差异信息,a,b各自结合差异信息即可得到对方的值 */public class TestExchange {    public static void main(String[] args) {        int a=2017,b=9999,diff;        System.out.println("原始:a="+a+";b="+b);        //实现交换        a=a^b;        b=b^a;        a=a^b;        System.out.println("a="+a+";b="+b);        //分析原理        diff=a^b;        b=b^diff;        a=diff^a;        System.out.println("a="+a+";b="+b);        //验证交换律        a=a^b;        b=a^b;        a=a^b;        System.out.println("a="+a+";b="+b);        diff=a^b;        b=b^diff;        a=a^diff;        System.out.println("a="+a+";b="+b);        //验证对称性        b=a^b;        a=a^b;        b=a^b;        System.out.println("a="+a+";b="+b);        //验证负数        a=-9999;b=2017;        System.out.println("原始:a="+a+";b="+b);        b=a^b;        a=a^b;        b=a^b;        System.out.println("a="+a+";b="+b);        a=-9999;b=-2017;        System.out.println("原始:a="+a+";b="+b);        b=a^b;        a=a^b;        b=a^b;        System.out.println("a="+a+";b="+b);    }}
结果如下:

原创粉丝点击