《程序员代码面试指南》第七章 位运算 不用额外变量交换两个整数的值

题目

不用额外变量交换两个整数的值

解析

异或运算的特点:
假设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);
    }
}

结果

猜你喜欢

转载自www.cnblogs.com/lizhouwei/p/8955204.html