二进制中1的个数 题目描述 输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示 题解 不能将这个数右移,负数的话首位会补1。可以用0x01左移。 也可以用val & (val - 1)判断。 class Solution { public: int NumberOf1(int n) { int ans = 0; while(n != 0){ ans++; n = n & (n-1); } return ans; } };