剑指offer 面试题15:二进制中1的个数

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

分析:首先把输入的数与 1做位 与  ,判断n的最低位是否为1,而后将1右移,再与n做位与,判断右数第二位是否为1。。。。。依次循环,最后判断出共有多少个1。


class Solution {
public:
     int  NumberOf1(int n) 
     {
      int count=0;
      unsigned int flag = 1;
         while (flag)
         {
             if(n&flag)
             {
                 count++;
             }
             flag=flag<<1;
         }
         return count;
     }
};

猜你喜欢

转载自blog.csdn.net/qq_42209189/article/details/80835127