标签:c语言
在c语言中有三种求解一个数1的个数的方法
将整数每次右移一位的方式
int Numble(int n)
{
int count = 0;
while (n)
{
if (n & 1 == 1)
count++;
n = n >> 1;
}
return count;
}
但这种方法存在的不足是,当这个整数是负数的时候,将无限循环
使整数与1进行与运算,1每次左移一位
int Numble(int n)
{
int count = 0;
int flag = 1;
while (flag&n)
{
count++;
flag = flag << 1;
}
return count;
}
整数减1在与这个整数相与
int Numble(int n)
{
int count = 0;
while (n)
{
count++;
n = n&(n - 1);
}
return count;
}
标签:c语言
原文地址:http://10810512.blog.51cto.com/10800512/1762057