[力扣系列]191.位1的个数,图文详解c++位运算(超好懂!)

文章目录

  • 题目
  • 思路一:按位比较
    • 代码
    • 复杂度分析
  • 思路二:不断去掉最低位的1
    • 代码
    • 复杂度分析
  • 知识点:位运算

题目

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。

思路一:按位比较

最简单的想法就是十进制转二进制,遍历一次统计 1 的个数。按照这个思路再细化一下就是用 1 分别和 n 在二进制下的每一位作与运算(&),若结果为 1 ,说明 n 的这个数位为 1 ,否则为 0 .
核心代码为:

sum += n & 1; 
n = n >> 1;

为了方便理解,请看步骤分解图。
例如:n = 666
step 1
sum : 0

你可能感兴趣的:(力扣题解,算法,面试,c++)