二进制中1的个数

题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

实现语言:Java

先把整数转换为二进制字符串,把字符串转为char数组,遍历。

1
2
3
4
5
6
7
8
9
10
11
12
public class Solution {
    public int NumberOf1(int n) {
        char[] str=Integer.toBinaryString(n).toCharArray();
        int res=0;
        for(int i=0;i<str.length;++i){
            if(str[i]=='1'){
                ++res;
            }
        }
        return res;
    }
}

 实现语言:Java

利用&运算的特性,把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0.那么一个整数的二进制有多少个1,就可以进行多少次这样的操作。

1
2
3
4
5
6
7
8
9
10
public class Solution {
    public int NumberOf1(int n) {
        int res=0;
        while(n!=0){
            n=(n-1)&n;
            ++res;
        }
        return res;
    }
}

 

posted on   lina2014  阅读(151)  评论(0编辑  收藏  举报

编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 上周热点回顾(1.20-1.26)

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示