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

来源:互联网 发布:o2o在线预约商城源码 编辑:程序博客网 时间:2024/06/07 07:01

题目描述

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

代码

思路1:把一个整数减去1,再和原来的整数做与运算,会把该整数最右边的一个1变为0。那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作。

function NumberOf1(n){    // write code here    var count=0;    while(n!=0){        n=n&(n-1);        count++    }    return count}

思路2:如果是负数,对其进行位操作

function NumberOf1(n)   {       if(n<0){          n = n>>>0;      }      var res = n.toString(2);       var count = 0;       flag = 1;       for(var i = 0; i <res.length; i++){           if(res[i] == 1){               count++            }       }       return count;   }
原创粉丝点击