题目:http://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8
C++
负数需要特殊处理,因为负数右移会补1(符号位)
1 class Solution { 2 public: 3 int NumberOf1(int n) { 4 unsigned int v = n; 5 int sum = 0; 6 while (v) { 7 sum += v&1; 8 v >>= 1; 9 } 10 return sum; 11 } 12 };