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;
        }
    };
     
     
  • 相关阅读:
    H.264编码之DCT变换原理
    颜色空间转换
    jdbc 大数据存储 图片读取
    spring 事务配置
    Cglib代理
    jdk代理
    spring装配bean
    map 常用方法
    list map set常用方法之list
    calendar 类 用法
  • 原文地址:https://www.cnblogs.com/wikiwen/p/10225042.html
Copyright © 2011-2022 走看看