位运算
位运算
二进制第k位上的数字是几
n >> k & 1
获取n的二进制表示
|
lowbit函数的引入
lowbit函数主要是用来获取最后一个1,即以后的位数
比如n = 10100, lowbit(n) -> 100
实现方式
前提条件:~x + 1等价于 -x
我们是通过x & (~x + 1) 来实现(等价于x & -x)
比如x 为 10001000去反后的结果为01110111 ,这个时候再加上一相当于对最后一个0及以后进行去反 -> 01111000 最后去&操作,x最后一个1后面位值都是一样的保持不变,前面的都不一样则为0,最终结果也就是00001000
例题
输入n个数,求解每一个数二进制位中1出现的个数
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Freedom Coding!
评论
ValineDisqus