二进制哪几位是1

原理:借助的思想,每次得到最后一个的位置并减去。

到这是第几位,需要取对数即可。

但是库的是以为底数的实数运算且复杂度常数较大,故采用哈希思想,的值为

于是有:

 

还有稍微复杂一点但效率更高的方法,不需要使用的数组,利用一个数学小技巧:互不相等且恰好取遍整数

说明,修改后如下: