交换两个整数变量的值
异或,可以理解为不进位的加法:1+1=0,0+0=0,1+0=1
异或的性质有:x^x = 0
,x^0 = x
,A^B^B = A
用异或交换两个整数A,B变量的值:
A = A ^ B
B = A ^ B
A = A ^ B
例如
public class A {
public static void main(String[] args) {
int num1 = 10;
int num2 = 15;
num1 = num1^num2;
num2 = num1^num2;
num1 = num1^num2;
System.out.println("num1="+num1+",num2="+num2);
}
}
求整数的绝对值
求A的绝对值,将A右移31位,与A异或,再加A不带符号右移31位的结果
public class A {
public static void main(String[] args) {
int num1 = -10;
System.out.println("num1的绝对值:"+(((num1^(num1>>31)))+(num1>>>31))); //>>>表示不带符号右移
}
}
//num1的绝对值:10
//负数求原码可以这样:(A^-1)+1