package com.swust.bit.example63;
/**
* 【问题】
* 如何不用额外的变量交换两个整数的值
* 【分析】
* 使用位运算 异或
* 【解答】
* 用以下三行代码即可交换a和b的值。
* a = a ^ b;
* b = a ^ b;
* a = a ^ b;
* 如何理解这三行代码的具体功能呢?首先要理解关于异或运算的特点:
* 假设a异或b的结果记为c,c就是a整数位信息和b整数位信息的所有不同信息。
* a=4=100, b=3=011 c=a^b=111。
* a异或c的结果就是b。比如a = 4 = 100, c = 111, a^c = 011 = 3 = b。
* b异或c的结果就是a。比如b = 3 = 011, c = 111, b^c = 100 = 4 = a。
*
* @author 雪瞳
* @Slogan 时钟尚且前行,人怎能就此止步!
* @Function 交换两个整数的值
*
*/
public class TransformIntNum {
public static void main(String[] args) {
int a = 12;
int b = 10;
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.err.println("交换后的值为 a = "+a+" b = "+b);
}
}