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

xiaoxiao2021-02-28  74

题目描述

输入一个整数,输出该数二进制表示中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; }
转载请注明原文地址: https://www.6miu.com/read-76271.html

最新回复(0)