求N!的二进制表示中最低位1的位置

来源:互联网 发布:c4d r16 mac 编辑:程序博客网 时间:2024/05/23 19:45

    二进制中最低位1的位置,即为求最低位1后面0的个数。所有小于N的数中,2的倍数都贡献一个0,4的倍数再贡献一个0,。。。


/*求N!的二进制表示中的最低位1的位置*/  int lowestOne(int N)     {         int ret = 0;         while(N)         {             N >>= 1;             ret += N;         }         return ret;     }  

引申题目:

给定整数n,判断它是否为2的方幂

(解答提示:n>0&&((n&(n-1) )==0))。