zoukankan      html  css  js  c++  java
  • 【LeetCode & 剑指offer刷题】位运算题2:15 二进制中1的个数(191. Number of 1 Bits)

    【LeetCode & 剑指offer 刷题笔记】目录(持续更新中...)

    191. Number of 1 Bits

    Write a function that takes an unsigned integer and returns the number of '1' bits it has (also known as the Hamming weight).
    Example 1:
    Input: 11
    Output: 3
    Explanation: Integer 11 has binary representation 00000000000000000000000000001011
    Example 2:
    Input: 128
    Output: 1
    Explanation: Integer 128 has binary representation 00000000000000000000000010000000
     
     
    //解法一:利用减一再做与运算可以使最右边的1变为0,统计1的个数
    class Solution
    {
    public:
        int hammingWeight(uint32_t n)
        {
            int count = 0;
            while(n) //有几个1就运算几次,比方法二效率高
            {
                count++;
                n = (n-1) & n; //通过减一再做与运算可以使最右边的1变为0,不断重复可以统计1的个数
            } //最后n变为0
            return count;
        }
    };
    //解法二:依次和1、10、100...10000000(31个0)做与运算
    class Solution
    {
    public:
        int hammingWeight(uint32_t n)
        {
            int count = 0;
            unsigned int mask = 1; //32位无符号数
            while(mask)
            {
                if(n & mask) count++;
                mask = mask << 1; //左移一位
            }
           
            return count;
        }
    };
     
     
  • 相关阅读:
    NSLocalizedString用法
    4-27学习心得
    手势学习
    plist处理
    数据存储
    initWithFrame方法
    控制器跳转小常识
    UIGestureRecognizer学习笔记
    博客资源
    检测手机wifi有没有打开
  • 原文地址:https://www.cnblogs.com/wikiwen/p/10225042.html
Copyright © 2011-2022 走看看