负数需要特殊处理,因为负数右移会补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 };
本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/5112969.html,如需转载请自行联系原作者