交换变量值
该题可以用两种方法结果:加法和异或
加法
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
a = a + b;
b = a - b;
a = a - b;
System.out.println(a+" "+b);
}
举个栗子:
异或
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println(a+" "+b);
}
按位异或 ^:如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1。
注意:如果两个数相同,则异或的结果为0。
(可以理解为找不同,不同的地方需要标注出来)
异或的性质
交换律:a ^ b = b ^ a;
结合律: a ^(b ^ c) = (a ^ b) ^ c;
恒等律: x ^ 0 = x;
归零律:x ^ x = 0;
自反:a ^ b ^ b = a ^ 0 = 0;
对于任意的x: x ^ (-1) = -x;
如果 a ^ b = c成立,那么a ^ c = b, b ^ c = a。