写在前面
异或概念用在这里不提及了,若不懂的话可自行了解
一、异或的性质
异或是一种基于二进制的位运算,用 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。
简单理解就是不进位加法,如1+1=0,,0+0=0,1+0=1。(这点很重要)
性质
- 交换律 可任意交换运算因子的位置,结果不变
- 2、结合律(即(a^b)^c == a^(b^c))
- 3、对于任何数x,都有x^x=0,x^0=x,同自己求异或为0,同0求异或为自己
- 4、自反性 A ^ B ^ B = A ^ 0 = A ,连续和同一个因子做异或运算,最终结果为自己
PS:关于异或的性质,大家可以自行找几个数试一试
二、异或的作用
1.交换二数值不需要第三数
直接看代码就知道了:
a = 9;//赋值
b = 11;
a=a^b; //1001^1011=0010
b=b^a; //1011^0010=1001
a=a^b; //0010^1001=1011
a = 11;//运行结果
b = 9;
2.判断奇偶更简单高效的做法
奇数二进制的最低位一定是1&#