笔试题:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数
思路:例如:13——1101
1101&1100 = 1100
1100&1011 = 1000
1000&0111 = 0000
原理:每按位与一次就减少一个1,看一个二进制数有多少个1就看它按位与了多少次即可
代码:
int NumberOf1(int n)
{
int count = 0;
while(n)
{
++count;
n = (n-1)&n;
}
return count;
}