异或运算的作用

异或运算:相同为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); 
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值