二进制中1的个数

题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

代码

class Solution {
public:
     int  NumberOf1(int n) {
         //正数统计1的个数,负数统计0的个数
         int ans = 0, t = n;
         if (n >= 0) {
             while (t) {
                 if (t & 1) {
                     ++ans;
                 }
                 t >>= 1;
             }
             return ans;
         } else {
             while (t != -1) {
                 if (!(t & 1)) {
                     ++ans;
                 }
                 t >>= 1;
             }
             return 32 - ans;
         }
     }
};

posted on 2017-03-11 20:04  jec  阅读(101)  评论(0编辑  收藏  举报

导航