如何用异或运算交换两个数的值

" ^ "——异或运算,二元操作运算符,对两个操作元的每个二进制位进行异或运算,运算规则为:

1^1=0,1^0=1,0^1=1,0^0=0;0^n=n,n^n=0。即相同为0,不同为1,但是这样很容易混淆,可以把异或运算记为无进位相加,如0和1异或就是1,1和1异或就会进位,要忽略,就是0。

那么如何不用临时变量去交换两个数的值呢,那么就可以利用0和任何数异或都为这个数本身,任何数和本身异或都为0,这个性质来交换两个数的值,举个例子:

public static void main(String[] args) {
        // 定义a,b两个变量
        int a = 10;
        int b = 20;
        System.out.println("a的初始值为:" + a);
        System.out.println("b的初始值为:" + b);
        // 两个相同的数异或等于0,任何数与0异或都等于本身
        // 异或运算满足交换律和结合律
        a = a ^ b;     // 此时b不变,a=a^b,b=b
        b = a ^ b;     // 此时b=a^b^b,所以b=a
        a = a ^ b;     // 此时a=a^b^a,所以a=b
        System.out.println("a交换后的值为:" + a);
        System.out.println("b交换后的值为:" + b);
    }

运行结果:

 

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值