以下变量均为有符号整数。
1.位运算性质
幂等律:a & a = a
, a | a = a
交换律: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 | c) & (b | c)
, (a | b) & c = (a & c) | (b & c)
, (a ^ b) & c = (a & c) ^ (b & c)
德摩根律:~(a & b) = (~a) | (~b)
, ~(a | b) = (~a) & (~b)
取反运算性质:-a = ~(a - 1)
与运算性质:a & 0 = 0
, a & (-1) = a
, a & (~a) = 0
或运算性质:a | 0 = a
异或运算性质:a ^ 0 = a
, a ^ a = 0
2.位运算常用技巧
a & (a - 1)
:将 a 的二进制表示的最后一个 1 变成 0.
a & (~a + 1)
:只保留 a 的二进制表示的最后一个 1 ,其他的 1 都变成 0.
(num & (1 << i))
:获取第 i 位是 1 还是 0.
num | (1 << i)
:将第 i 位置 1.
num & ~(1 << i)
:将第 i 位置 0.
num & ~(1 << i) | (v << i)
:将第 i 位更新为 v.
如果对您有帮助,请点赞关注支持我,谢谢!❤
如有错误或者不足之处,敬请指正!❤
个人主页:星不易 ❤
算法通关村专栏:不易|算法通关村 ❤