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

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

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

//每次把n-1,由于进制特点,会向最右侧的非零位的1借位,然后从这位开
//始,0变1,1变0,将原来的数字和减一后的数字相与可以知道当前最右侧有
//一个非零位,循环直到这个数减为0可以得到该数中共有几个1,有几个1循环//几次
class Solution {
public:
     int  NumberOf1(int n) {
         int count=0;
        // if(n<0)
       //  {
              while(n)
         {
             count++;
             n=(n-1)&n;
         }   
         return count;
       //  }
          
     }
 
};

猜你喜欢

转载自blog.csdn.net/MereX/article/details/89433950
今日推荐