位运算的性质
本文对位运算的性质做一个大概的概括,用于之后的复习
交换律
A | B = B | A
A & B = B & A
A ^ B = B ^ A
结合律
(A | B) | C = A | (B | C)
(A & B) & C = A & (B & C)
(A ^ B) ^ C = A ^ (B ^ C)
分配律
- 与(&)对异或(^)满足分配律
A & (B ^ C) = (A & B) ^ (A & C)
相关题目链接: leetcode 1835 Find XOR Sum of All Pairs Bitwise AND
相关题解:
- 或(|)对与(&)满足分配律
A | (B & C) = (A & B) | (A & C)
- 与(&)对或(|)满足分配律
A & (B | C) = (A & B) | (A & C)
- 异或(^)对或(|)满足分配律
A ^ (B | C) = (A ^ B) | (A ^ C)
其他重要的性质
- 快速查询一个数字是不是2的倍数
if(x ^ (x - 1) == 0) {
System.out.println("Yes")
}
- 不明觉厉
a | (a & b) = a
a & (a | b) = a
a | 0 = a
a & 1 = a
a & 0 = 0
a ^ a = 0
a ^ 0 = a
a | ~a = 1
a & ~a = 0
a & a = a
a | a = a