题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解题思路 这个题要具备基本的位运算相关知识: C++代码 class Solution { public: int NumberOf1(int n) { //负数表示成补码:符号位不变,其余位取反再加1; int count=0; if(n<0) { n=-n; n=~n+1; } unsigned int flag=1; while(flag) { if(n&flag) { count++; } flag=flag<<1; } return count; } };