Description 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 Solution: n & n - 1会消除n的二进制位最后一个1(无论正负),所以消除的次数就代表了二进制中1的个数。 循环会终结因为二进制中1的个数是有限的,而每次一定会消掉一个0 //C++ int NumberOf1(int n) { int cnt = 0; while(n){ cnt++; n = n & (n - 1); } return cnt; }