题目
不用额外变量交换两个整数的值
解析
异或运算的特点:
假设a异或b的结果为c,c就是a整数位信息和b整数位信息的所有不同信息
异或的逆运算为它本身
比如 a=4=100, b=3=011, a^b=c=000;
a异或c的结果为b, a=4=100, c=000, a^c=3=011;
b异或c的结果为a, b=3=011, c=000, b^c=4=100;
java代码
package com.lizhouwei.chapter7;
/**
* @Description: 不用额外变量交换两个整数的值
* @Author: lizhouwei
* @CreateDate: 2018/4/26 21:07
* @Modify by:
* @ModifyDate:
*/
public class Chapter7_1 {
public void swap(int a, int b) {
System.out.println("交换前 a="+a+" b="+b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("交换后 a="+a+" b="+b);
}
//测试
public static void main(String[] args) {
Chapter7_1 chapter = new Chapter7_1();
chapter.swap(4,5);
}
}
结果