前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法题 — 整数转二进制,查找其中1的数量

算法题 — 整数转二进制,查找其中1的数量

作者头像
人不走空
发布2024-02-25 10:13:00
1870
发布2024-02-25 10:13:00
举报
文章被收录于专栏:学习与分享

题目

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

代码语言:javascript
复制
public class CountOnes {
    public static int countOnes(int num) {
        int count = 0;
        while (num != 0) {
            // 如果当前位为1,计数器加1
            if ((num & 1) == 1) {
                count++;
            }
            // 将数字右移一位,继续检查下一位
            num = num >>> 1; // 无符号右移
        }
        return count;
    }

    public static void main(String[] args) {
        int num = 9; //1001
        System.out.println(+ num + "中有 : " + countOnes(num)+"个1"); 
    }
}

详细解读

  1. public class CountOnes {: 这行代码定义了一个名为 CountOnes 的公共类。
  2. public static int countOnes(int num) {: 这行代码定义了一个静态方法 countOnes,用于计算给定整数 num 中包含的二进制表示中的1的个数。它采用一个整数作为输入参数,并返回一个整数作为1的个数。
  3. int count = 0;: 这行代码声明了一个名为 count 的整数变量,用于记录1的个数。初始值为0。
  4. while (num != 0) {: 这行代码开始一个 while 循环,条件是 num 不等于0,即当 num 的二进制表示还有位时,继续执行循环。
  5. if ((num & 1) == 1) {: 这行代码检查 num 的最低位是否为1,它通过使用按位与运算符 & 和二进制数 1 来实现。如果最低位是1,则条件成立,计数器 count 增加1。
  6. num = num >>> 1;: 这行代码将 num 右移一位。>>> 是无符号右移操作符,它将 num 的所有位向右移动一位,并用0填充最高位。
  7. return count;: 这行代码返回计数器 count 的值,即1的个数。
  8. public static void main(String[] args) {: 这行代码定义了主方法 main
  9. int num = 9; //1001: 这行代码声明并初始化了一个名为 num 的整数变量,赋值为9。在二进制中,9表示为1001。
  10. System.out.println(+ num + "中有 : " + countOnes(num)+"个1");: 这行代码调用 countOnes 方法来计算 num 中1的个数,并将结果打印到控制台。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 详细解读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,助力维护团队卓越代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档