利用位运算加速计算
整除2与模2
x: int = 123
# 整除2:
x = x>>1
# 模2:
x = x&1
x&(x−1) (Brian Kernighan 算法)
对于任意整数x: int,令 x = x&(x−1),该运算将x的二进制表示的最后一个1变成0.
用处:
- 计算整数的二进制表示中有多少个1
x&(-x)
-x的运算对应的二进制操作是: 所有位置取反+1
对于x: int, x&(-x)的作用是得到x的二进制表示中最低位的1及其后面的0. 比如, 如果x=12,那么它的二进制表示是00001100,那么x&(-x)就是00000100.
用处:
- 判断整数数是否为2的幂
- 计算整数数的最大的2的幂的因数

浙公网安备 33010602011771号