天天看点

牛客网-二进制中1的个数一、题目二、思路三、代码

一、题目

牛客网-二进制中1的个数一、题目二、思路三、代码

二、思路

  • 对于整数,两种方法

    – 1、取余法

    将n取余,统计为1的个数

    – 2、向右移位法

    将n&1,当不为0时,说明这个位是1;然后n>>1;向右移位,左边补0;

  • 对于负数,向右移位,但是注意左边是补1的,不是补0

三、代码

class Solution {
public:
     int  NumberOf1(int n) {
         int pos=0;
         int Count=0;
         if(n==0)
         {
             return 0;
         }
         for(int i=0;i<32;++i)
         {
             if(n & 1!=0)
             {
                 Count++;
             }
             n >>=1;
          }
         return Count;
     }
};
           

继续阅读