浅谈“异或” 运算符
2014-02-12 23:38
183 查看
异或运算符的符号为^,当对两个整数进行异或操作计算时,是对其相应的二进制数进行的异或运算。
其规则为:对于每一二进制位,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.不经过第三方变量直接交换两个整数的值。
2. 在网络传输过程中,通过异或对数字进行简单加密,接收后相应解密。
如:需要加密的数字为a,秘钥为b,则加密后的结果c=a^b;
接收后,对c进行解密。c^b = a^b^b = a^(b^b) = a^0 = a。
其规则为:对于每一二进制位,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.不经过第三方变量直接交换两个整数的值。
public class ExchangeNumber { public static void main(String[] args) { int a = 12; int b = 7; System.out.println("原数 a=" + a + " b=" + b); a = a ^ b; b = a ^ b; a = a ^ b; System.out.println("交换后的值为 a=" + a + " b=" + b); } }
2. 在网络传输过程中,通过异或对数字进行简单加密,接收后相应解密。
如:需要加密的数字为a,秘钥为b,则加密后的结果c=a^b;
接收后,对c进行解密。c^b = a^b^b = a^(b^b) = a^0 = a。
相关文章推荐
- 浅谈异或运算符的应用及相关题目题解
- java面试之位异或运算符和switch特点
- 使用异或运算符对整数进行加密
- C++位运算符(异或运算符和移位运算符)
- 位异或运算符的特点
- 按位异或运算符^
- Java的运算符--与(&)、非(~)、或(|)、异或(^)详解
- “异或”运算符
- strlen与strcpy函数实现的浅谈及辨析sizeof运算符与strlen函数的区别
- C#新发现:异或(^)运算符也适用于布尔值
- 按位异或运算符^
- C++中的按位与&、按位与或|、按位异或^运算符详解
- 异或运算符
- 浅谈JS运算符&&和|| 及其优先级
- 深入理解按位异或运算符
- 深入理解按位异或运算符
- 用按位异或运算符交换两个数,不引入第三个变量
- 使用按位异或运算符进行两数交换
- BZOJ 2744 浅谈异或二进制分析及二分图最大团
- 浅谈PHP中的<<<运算符