剑指Offer - 面试题15. 二进制中1的个数(位运算)
发布日期:2021-07-01 03:20:10 浏览次数:2 分类:技术文章

本文共 732 字,大约阅读时间需要 2 分钟。

1. 题目

请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。

示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。示例 2:输入:00000000000000000000000010000000输出:1解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。示例 3:输入:11111111111111111111111111111101输出:31解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • n&(n-1)得到的数比n的二进制少一个1
class Solution {
public: int hammingWeight(uint32_t n) {
int count = 0; while(n) {
n = n&(n-1); count++; } return count; }};

在这里插入图片描述

转载地址:https://michael.blog.csdn.net/article/details/104289467 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:剑指Offer - 面试题17. 打印从1到最大的n位数
下一篇:剑指Offer - 面试题10- II. 青蛙跳台阶问题

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月15日 05时50分48秒