JAVA不借助第三者实现两个变量值的互换(异或运算符实现)

JAVA不借助第三者实现两个变量值的互换

利用异或运算符实现两个数的互换

public class Tets {//借助1异或运算符实现两个数的互换
    public static void main(String[] ARGS)
    {
        Scanner in=new Scanner(System.in);//创建一个Scanner对象
        int n1=in.nextInt();
        int n2=in.nextInt();
        System.out.println("互换前第一个数为:"+n1+",第二个数为:"+n2);
        {
            n1=n1^n2;
            n2=n2^n1;
            n1=n1^n2;
        }
        System.out.println("交换后第一个数:"+n1+",第二个数:"+n2);
    }
}

解析异或运算:
a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

即a=a^b;

如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。例如:(同为0,异为1)

0^0=0;
0^1=1;
1^1=0;

异或运算可以使某些特定位翻转,例如在上例中输入9 7
用二进制表示:9=1001b,7=0111;

9^7=1110;
n1=9,n2=7时:
n1=9^7=1110;
n2=7^n1=0111^1110=1001=9;
n1=n1^n2=1110^1001=0111=7;互换完成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值