你不知道的异或运算

80 阅读1分钟

二进制位运算是基于二进制数的计算,包括与(&),或(|),非(!),异或。前三种运算我们在平时见的比较多,异或相对比较少,那么它有哪些妙用呢?这篇文章就来讲讲。

异或运算

相同以0,不同为1

同或运算

相同以1,不同以0

这俩概念很容易记混,这里可以异或运算看成无进位相加。无进位的意思就是1+1=2,本来要进一位,现在不进了,该位置的值变成了0。

异或运算的性质

敲黑板,划重点来了

(1) 0 ^ N = N

(2) N ^ N = 0

(3) 满足交换律和结合律:

a ^ b = b ^ a,

(a ^ b ) ^ c = a ^ ( b ^ c )

这几个性质我们用无进位相加看下非常好理解也能记得住。

这里为什么会单独讲异或运算,那当然是因为它很魔性。下面结合几道题,看一下。

语雀合集路径

算法刷题-异或-如何不用额外变量交换两个数

算法刷题-异或-一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数