位1的个数
题目描述:
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)
示例
输入:n = 00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。
输入:n = 11111111111111111111111111111101
输出:31
解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 ‘1’。
提示:
输入必须是长度为 32 的 二进制串 。
解题思路:
- 这是力扣上的一道简单题,题目给出的代码为
int hammingWeight(uint32_t n) {
}
- 由于是以二进制的形式输入的数,所以我的思路是对输入的数模2,从而判断该位的数字是否为1,然后除等于2,将最后一位数字去掉,循环往复,得到答案
int hammingWeight(uint32_t n) {
int count = 0;
while (n)
{
if (n % 2 == 1)
{
count++;
}
n /= 2;
}
return count;
}