leetcode:191. 位1的个数

简介: leetcode:191. 位1的个数

一、题目:

函数原型:

int hammingWeight(uint32_t n)

参数解释:

uint32_t其实是unsigned int,C语言给无符号整型short int,取别名为uint32_t

二、思路:

利用位运算,设置循环,每次二进制串按位与上1,如果值为1,则说明二进制串的最低位是1,如果为0,则说明二进制串的最低位是0。

(1的二进制串为00000000000000000000000000000001,因此和1按位与时结果只与二进制串的最低位有关,前31位始终为0)

每次循环二进制串右移1位,最高位补充0。当二进制串的结果为0时说明二进制串中已经没有1,循环结束。

 

三、代码:

int hammingWeight(uint32_t n) {
    int sum=0;
    while(n!=0)
    {
        if(n&1==1)
        {
            sum++;
        }
        n=n>>1;
    }
    return sum;
}


目录
相关文章
|
6月前
|
算法 测试技术
LeetCode-1004. 最大连续1的个数 III
LeetCode-1004. 最大连续1的个数 III
|
6月前
leetcode-485:最大连续1的个数
leetcode-485:最大连续1的个数
46 0
【剑指offer】-最小K个数-28/67
【剑指offer】-最小K个数-28/67
|
6月前
|
Java
【LeetCode力扣】面试题 17.14. 最小K个数(top-k问题)
【LeetCode力扣】面试题 17.14. 最小K个数(top-k问题)
86 1
|
4月前
2670.找出不同元素数目差数组-力扣(LeetCode)
2670.找出不同元素数目差数组-力扣(LeetCode)
32 0
|
6月前
|
算法
【力扣】191.位 1 的个数
【力扣】191.位 1 的个数
|
6月前
【力扣】485.最大连续 1 的个数
【力扣】485.最大连续 1 的个数
|
6月前
leetcode-191:位1的个数
leetcode-191:位1的个数
43 0
|
6月前
牛客网-最小的k个数
牛客网-最小的k个数
30 0
Leetcode——485. 最大连续 1 的个数
文章目录 1、题目 2、滑动窗口 3、一次遍历(官方题解)
Leetcode——485. 最大连续 1 的个数