目录
1,题目
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。
2,代码
2.1逐位判断
/**
* @param {number} n - a positive integer
* @return {number}
*/
var hammingWeight = function(n) {
// 逐位判断
let count = 0;
for(let i=0;i<32;i++){
if(n>>i &1){
count++;
}
}
return count;
};
核心代码
for(let i=0;i<32;i++){
if(n>>i &1){
count++;
}
}
2.1.2逐位判断2
var hammingWeight = function(n) {
let count = 0;
for (let i = 0; i < 32; i++) {
if ((n & (1 << i)) !== 0) {
count++;
}
}
return count;
};
2.2位运算优化
/**
* @param {number} n - a positive integer
* @return {number}
*/
var hammingWeight = function(n) {
// 位运算优化
let count = 0;
while(n){
n &= n-1;
count++;
}
return count;
};
3,学习与总结
总结
(1)运用了昨天学习的位运算,自己实现了第一种方法 : 逐位判断;
(2)学习了位运算的性质:
标签:count,运算,191,number,Days16,js,let,2.1,逐位 From: https://blog.csdn.net/m0_51666362/article/details/136631627n & (n−1),其运算结果恰为把 n 的二进制位中的最低位的 1 变为 0 之后的结果。
如:
6 & (6−1)=4,
6=(110),4=(100)
6 & (6−1)=4,
运算结果 4 即为把 6 的二进制位中的最低位的 1 变为 0 之后的结果。