输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
这种硬件题目,用硬件思想做很快的。
思路:先强制转换成无符号数,逐次移位、判断、累加即可。
class Solution {
public:
int NumberOf1(int n) {
unsigned int nn = n;
int count = 0;
while(nn > 0)
{
if(nn & 0x01 == 0x01) count ++;
nn >>= 1;
}
return count;
}
};