其实如果最后一位是0,那么进行右移操作,直到最后一位是1结束,也就是求质因子2的个数,然后再加1即可
即有:[N/2]+[N/4]+[N/8]......
int CountLowestOne(int n)
{
int ret=0;
while(n)
{
n>>=1;
ret+=n;
}
return ret;
}
注意:[N/k]等于,1,2,3,,,N中能被k整除的个数。