• 剑指 Offer 15. 二进制中1的个数


    原题链接

    分析

    因为我们知道使用位运算符进行计算的时候就是使用的二进制位,所以可以直接行移位操作,然后判定有多少个1

    public class Solution {
        // you need to treat n as an unsigned value
        public int hammingWeight(int n) {
            int res = 0;
            while(n != 0){
                if((n & 1) == 1) res ++;
                n >>>= 1;
            }
            return res;
        }
    }
    

    也可以换一种写法

    我们知道n & (n - 1),就相当于找到了n中的最低位的1然后变成了0,所以只需要找到最后位的1对应位置改变即可。

    public class Solution {
        // you need to treat n as an unsigned value
        public int hammingWeight(int n) {
            int res = 0;
            while(n != 0){
                n &= n - 1;
                res ++;
            }
    
            return res;
        }
    }
    
    如有错误,欢迎指正!
  • 相关阅读:
    SPI简述
    stm32和sd卡
    BKP和RTC
    Lwip与底层的接口
    关于Ad-hoc
    stm32 引脚映射 和 ADC
    GDB使用总结
    linux管道和重定向
    学习python的第四天
    学习pyton的第三天
  • 原文地址:https://www.cnblogs.com/Lngstart/p/14717649.html
Copyright © 2020-2023  润新知