题目:实现一个函数,输入一个整数,输出该整数二进制中1的个数
代码一:
int Find(int j)
{
int count = 0;
while (j)
{
if (j & 1)
count++;
j = j>>1;
}
return count;
}
分析:
如果输入的整数是正数,那么可以输出结果。但是如果输入的是负数,要保证移位后的还是负数,所以移位后最高位需要设为1。如果一直做右移操作就会,调试的时候就会发现这个数就会变成一个很大的数,进入死循环。