浅谈“异或” 运算符

异或运算符的符号为^,当对两个整数进行异或操作计算时,是对其相应的二进制数进行的异或运算。

其规则为:对于每一二进制位,0^0 =0, 0^1=1, 1^0=1, !^1=0。

可简单理解成:相同位为0,不同为为1(或两个数字相加,但不考虑进位)。

因此,又常称为按位异或。

 

异或运算具有如下几个特征:

1.0^任何数 = 任何数;

2.任何数 ^ 任何数 = 0;

3.具有交换律:a^b = b^a;

4.具有结合律:a^b^c = a^(b^c)。

 

因此,有时会见到异或运算出现在如下两个场景中:

1.不经过第三方变量直接交换两个整数的值。

 1 public class ExchangeNumber {
 2 
 3     public static void main(String[] args) {
 4 
 5         int a = 12;
 6         int b = 7;
 7         System.out.println("原数 a=" + a + " b=" + b);
 8         a = a ^ b;
 9         b = a ^ b;
10         a = a ^ b;
11         System.out.println("交换后的值为 a=" + a + " b=" + b);
12     }
13 
14 }

 

2. 在网络传输过程中,通过异或对数字进行简单加密,接收后相应解密。

如:需要加密的数字为a,秘钥为b,则加密后的结果c=a^b;

接收后,对c进行解密。c^b = a^b^b = a^(b^b) = a^0 = a。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值