Code Interview Guide for Programmers Chapter 7 Bit Operations Swap the values of two integers without additional variables

topic

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

Parse

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

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);
    }
}

result

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324897625&siteId=291194637