您的位置:首页 > 其它

x&x-1的问题?

2012-07-04 13:49 69 查看
1. 判断一个整数是否是2的N次方?

bool foo(int n)
{
if(n == 0) return true;
if(n < 0) return false;
return !(n&n-1);
}


2.统计一个整数的二进制中1的个数

int foo(int n)
{
int nCount = 0;
while(n)
{
nCount++;
n = n&(n-1);
}
return nCount;
}


x&x-1表示把数字x对应的二进制的最右边的1变为0。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐