二进制中1的个数

循环检查法
观察可知,二进制中某一位如果为1,需要在当前位对2取模值为1,辗转取模,非常直观
int hammingWeight(uint32_t n) {
int sum = 0;
while(n>=1){
if(n%2==1){
sum++;
}
n = n/2;
}
return sum;
}

以下方法与之前类似,只是多了一部按位与 0 求或,这个方法适用于 num 前有一大串 0 的情况,可以减少一部分循环,但是时间复杂度仍然是线性的,空间复杂度仍然是常数级
func hammingWeight(num uint32) int {
num = num | 0
count := 0
for num >= 1 {
if num % 2 == 1 {
count ++
}
num = num / 2
}
return count
}

本文介绍了一种通过循环检查法来计算二进制数中1的数量的方法。通过对给定数值进行辗转取模操作,我们可以有效地计算出二进制表示中1的个数。此外还提供了一个优化方案,即在每次循环中使用按位与操作来进一步提高效率。
&spm=1001.2101.3001.5002&articleId=119361336&d=1&t=3&u=fc69b11596d3409c93973458b2589bd5)
5566

被折叠的 条评论
为什么被折叠?



