如何在不用第三个变量的情况下进行元素互换(^异或运算符的运用)

创建一个测试类,在这个类的主方法中创建扫描器对象接受用户输入两个变量值,然后通过位运算的异或运算符”^“实现两个变量的互换,代码如下

package www.csdn.net.fuxi;

import java.util.Scanner;

public class Testcopy {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);// 创建扫描器
		System.out.println("a:");
		long A = scan.nextLong();// 接收第一个变量
		System.out.println("b:");
		long B = scan.nextLong();// 接收第二个变量值
		System.out.println("a=" + A + "\tb=" + B);
		System.out.println("互换后:");
		A = A ^ B;// 执行变量互换
		B = B ^ A;
		A = A ^ B;
		System.out.println("a=" + A + "\tb=" + B);

	}
}


参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0

例如:10100001^00010001=10110000

0^0=0,0^1=1 0异或任何数=任何数

1^0=1,1^1=0 1异或任何数-任何数取反

任何数异或自己=把自己置0

上面的代码可以理解为把数值变量转换为2进制即:

a=4,b=5

a=a^b         //00000100^00000101=00000001现在a=00000001

b=b^a         //00000101^00000001=00000100现在b=00000100

a=a^b         //00000001^00000100=00000101现在a=00000101

经过上边的步骤就完成了两个整型变量的互换了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值