LeetCode.191.位1的个数
1.题目 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量 )。 示例 1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。 示例 2: 输入:00000000000000000000000010000000 输出:1 解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。 示例 3: 输入:11111111111111111111111111111101 输出:31 解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。 2.解题思路 审题之后先明确了题目的目的是计算输入的无符号整数中 ’1‘ 的个数,所以我第一个想到用数组去做,利用循环去挨个判断是否是 ’1‘ ,并进行累加得出个数。但是后来在编译过程中发生了错误所以尝试另外一种方法,看了评论以及相关提示发现要使用 位运算 。因此利用循环和位运算的右移以及按位与运算 ‘&’ 来实现代码进行对 ‘1’ 的个数累积。(此处对位运算的理解还需优化) 3.代码 int hammingWeight(uint32_t n)