剑指offer——二进制中1的个数

来源:互联网 发布:开一家小型咖啡屋 知乎 编辑:程序博客网 时间:2024/06/07 04:41

自己先写了一个,有点复杂。

这是最简单的方法:


int  NumberOf1(int n) {

         int result=0;
         while(n!=0)
         {
             n=n&(n-1);
             result++;
         }
         return result;

     }

利用n-1把n从右到左第一个1变为0,后面的所有0变为1。

n&(n-1)就把n的最后一位1去掉。

用位运算可以解决一些特殊的问题或许会简化很多。

1 0
原创粉丝点击