题目:编写代码实现求出一个整数在内存中的二进制1的个数。
大家都知道,内存中的数都是以二进制存储的,所以最容易想到的思路就是给这个数 num 模 2,取模等于 1 说明这位为 1,定一个计数变量,整一个循环,直到num 为 0,计数器中为num 这个数1的位数。
方法一:
代码如下:
int main()
{
int num =10;
int count = 0;
while (num)
{
if (num % 2 == 1)
count++;
num /= 2;
}
printf("%d \n",count);
system("pause");
return 0;
}
思考一下这种方法有没有问题呢?答案是肯定的,如果num 为负数的话,这个程序就有问题了,那么怎么解决呢?
方法二:
计算机中存的数是32的(vs2013),那我们可以拿出每一位和 1 进行 按位与操作,如果这位是1结果为1,是0结果为0。
代码如下:
int main()
{
int num = 10;
int coun