计算二进制中1的个数

编写一段代码,统计变量num中二进制数中1的个数

我们的方法是逐位判断,具体方法是当前位与1做位与操作,而其他位与0做位于操作,如果结果不为0,则说明当前位是1,计数,否则当前位是0,不计数。将num每次右移一位,再与1做案位于操作。

方法一

int getNum(int num)

{

     int count;   

   for(count=0;num!=0;num=num>>1)

     {

         if(num&1){

             ++count;

         }

     }

      return count;

}

方法二

 思路是每次循环统计二进制数中最后一个1(最右边的那个1),统计完成后将最后一个1移除。移除的方法是将原数字与原数字减1的差做逻辑与。

int getNum(int num)

{

     int count;

     for(count=0;num!=0;num&=num-1)

     {

             ++count;

     }

      return count;

}

猜你喜欢

转载自blog.csdn.net/Jeff_Winger/article/details/80783740