一:
lowbit(k)=k&-k 注意这是用补码计算。将k的二进制高位的1全部清空,只留下低位的1。
应用:树状数组,二维树状数组。
二:
n&(n-1) 将低位的1全部清空,只留下高位的1。
应用:
1.求某一个数的二进制表示中1的个数.
2. 判断一个数是否是2的方幂.
3. 计算N!的质因数2的个数.
三:
判断组合数C(n,m)的奇偶性 : C(n,m) 的奇偶性判断: if((n & m) == m)为奇数,否则为偶。
lowbit(k)=k&-k 注意这是用补码计算。将k的二进制高位的1全部清空,只留下低位的1。
应用:树状数组,二维树状数组。
n&(n-1) 将低位的1全部清空,只留下高位的1。
应用:
1.求某一个数的二进制表示中1的个数.
2. 判断一个数是否是2的方幂.
3. 计算N!的质因数2的个数.
判断组合数C(n,m)的奇偶性 : C(n,m) 的奇偶性判断: if((n & m) == m)为奇数,否则为偶。