白菜刷LeetCode记-191. Number of 1 Bits

今天的题目如下:

这道题目一开始想到的是通过整数除以2,如果余数为1的话,就增加 ‘1’ 的数目。代码如下:

 1 /**
 2  * @param {number} n - a positive integer
 3  * @return {number}
 4  */
 5 var hammingWeight = function(n) {
 6     let res = 0;
 7     while(n !== 0){
 8         if( n % 2 == 1){
 9             res++;
10         }
11         n = parseInt(n/2);
12     }
13     
14     return res;
15 };

当然也有更加巧妙的方法,原理如截图:

代码如下:

 1 /**
 2  * @param {number} n - a positive integer
 3  * @return {number}
 4  */
 5 var hammingWeight = function(n) {
 6     let res = 0;
 7     while(n !== 0){
 8         res ++;
 9         n &= (n-1)
10     }
11     
12     return res;
13 };

END

原文地址:https://www.cnblogs.com/sssysukww/p/9758386.html