您的位置:首页 > Web前端

【剑指offer】题10:二进制中1的个数

2017-06-16 15:24 363 查看
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示

常规解法:

int  NumberOf1(int n)
{
int m = sizeof(n);
m *= 8;
int k(0);
for (auto i = 0; i < m;++i)
{
if ((n>>i)&1)
{
k++;
}
}
return k;
}


利用n&(n-1)可去除n最右边的1:

int  NumberOf1(int n)
{
int count(0);
while (n)
{
count++;
n = n&(n - 1);
}
return count;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: