题目:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
分析:
通过使用数字1来不断左移,对输入的数进行不断检测,然后就可以检测出输入的数的二进制形式中有多少个1了
因为一般的int都是32位,所以在实现的时候只需要不断左移32次即可检测完成
具体代码实现如下所示:
int NumberOf1(int n) {
if (n == 0) {
return 0;
}
int sum;
int index = 1;
int i = 32;
while (i > 0) {
if ((n & index) != 0) {
sum++;
}
index = index << 1;
i–;
}
return sum;
}