题目描述:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:用移位运算来解,例如-8补码为11111000,与1做与运算(00000001),运算结果不得0则count++,然后1左移1位得00000010,再做与运算,以此类推。
代码实现:
int NumberOf1(int n) {
int count=0;
unsigned int flag=1;
while(flag){
if (n & flag){
count++;
}
flag=flag<<1;
}
return count;
}