设为首页 加入收藏

TOP

快速计算32位数中1的位数
2014-11-24 00:40:18 来源: 作者: 【 】 浏览:64
Tags:快速 计算 32位数 位数
一语句实现x是否为2的若干次幂的判断
#define is2*n(x) ((x & (x - 1)) 0 : 1)
int main(void)
{
int m = 512;
cout << ((m & (m - 1)) false : true) << endl;
//即当m中只有一位为1时,才为若干次幂值
//若有两个及以上1,则(m & (m - 1))不为0,输出0,表示不为2的若干次幂
return(0);
}

类比:x为2的若干次幂即表示x中1的位数为1,题目转化为求一个32位数中1的位数,如果为1,则表示该数为2的若干次幂

同理也可以利用此规则求一个32位数中1的位数, (m & (m - 1)每次可用消除一个1,计算的次数即为1的个数

摘自 飞奔蜗牛的 Linux之旅。。。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言学习趣事_MSCRT_IO_SourceFi.. 下一篇C语言中的一些小知识(《c语言入..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: