异或运算:相同为0,不同为1参考博客链接
特点
- 0 ^ 任何数 => 该数本身
- 1 ^ 任何数 => 即为对 其对应二进制位取反
- 任何数 ^ 自己 => 0
常见用途
- 使某些特定的位取反
例如:对二进制 1010 的第一位和第四位取反,则
1010 ^ 1001 = 0011
- 不使用临时变量交换两个变量的值
int a = 1;
int b = 2;
a = a ^ b;
b = b ^ a;
a = a ^ b;
- 快速判断两个数是否相等
int a = 1;
int b = 1;
if( (a ^ b) == 0)
System.out.println("a == b");
- 简单加密
char类型,即字符类型的ASCII对应有十进制整数
对信息异或同一个数,再次异或即为解密
public class Main{
public static void main(String[] args) {
char a1 = '简' , a2 = '单' , a3 = '加' , a4 = '密' ;
char secret = '8' ;
a1=(char) (a1^secret);
a2=(char) (a2^secret);
a3=(char) (a3^secret);
a4=(char) (a4^secret);
System.out.println("密文:" + a1+a2+a3+a4);
a1=(char) (a1^secret);
a2=(char) (a2^secret);
a3=(char) (a3^secret);
a4=(char) (a4^secret);
System.out.println("原文:" + a1+a2+a3+a4);
}
}