
【Java】求一个整数,在内存当中存储时,二进制1的个数
初始化一个计数器 使用循环不断将整数除以2。 在每次循环中,检查当前位是否为1。 如果是,将计数器加1。 继续处理除以2的结果,直到整数变为0。 初始化计数器 使用循环不断将整数与其右移一位的结果进行按位与运算。 每次循环,计数器加1。 当整数变为0时,循环结束。
发布日期:2021-05-08 21:34:19
浏览次数:21
分类:精选文章
本文共 1456 字,大约阅读时间需要 4 分钟。
计算二进制1的个数的两种高效方法
在编程中,计算一个整数的二进制表示中1的个数是一个常见的任务。以下两种方法可以帮助你快速实现这一目标。
第一种方法:逐位检查
方法思路
这种方法通过不断将整数除以2来逐位检查每一位是否为1。具体来说:
count
为0。代码示例
public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int count = 0; while (num != 0) { if (num % 2 == 1) { count++; } num /= 2; } System.out.println("该数二进制1的个数有" + count + "个");}
代码解释
Scanner sc = new Scanner(System.in);
:读取用户输入。int num = sc.nextInt();
:获取用户输入的整数。int count = 0;
:初始化计数器为0。while (num != 0)
:当整数不为0时,继续循环。if (num % 2 == 1)
:检查当前位是否为1。count++;
:如果是,将计数器加1。num /= 2;
:将整数除以2,继续处理下一位。System.out.println("该数二进制1的个数有" + count + "个");
:输出结果。
第二种方法:利用位运算
方法思路
这种方法通过利用位运算来逐步移除1的最低有效位:
count
为0。代码示例
public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int count = 0; while (num != 0) { count++; num = num & (num - 1); } System.out.println("该数二进制1的个数有" + count + "个");}
代码解释
Scanner sc = new Scanner(System.in);
:读取用户输入。int num = sc.nextInt();
:获取用户输入的整数。int count = 0;
:初始化计数器为0。while (num != 0)
:当整数不为0时,继续循环。count++;
:每次循环计数器加1。num = num & (num - 1);
:移除最低有效位,继续处理下一位。System.out.println("该数二进制1的个数有" + count + "个");
:输出结果。
总结
以上两种方法均可有效地计算一个整数的二进制表示中1的个数。第一种方法通过逐位检查,第二种方法则通过位运算优化,性能更高。选择哪种方法取决于具体需求和性能要求。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月05日 12时39分54秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
bcolz的新操作
2019-03-06
zmq的send
2019-03-06
阿里钉钉面试题
2019-03-06
C++中找资源或者函数的方法
2019-03-06
delete对象时会自动调用类的析构函数
2019-03-06
POD类型
2019-03-06
const与常量,傻傻分不清楚~
2019-03-06
Head First设计模式——迭代器模式
2019-03-06
MongoDB版本及存储引擎区别
2019-03-06
shell echo单行和多行文字定向写入到文件中
2019-03-06
cmp命令
2019-03-06
Linux 磁盘管理(df fu fdisk mkfs mount)
2019-03-06
jQuery的事件绑定与触发 - 学习笔记
2019-03-06
Linux上TCP的几个内核参数调优
2019-03-06
记一次讲故事机器人的开发-我有故事,让机器人来读
2019-03-06
seo 回忆录百度基本概念(一)
2019-03-06
netcore中使用session
2019-03-06
Android 开发学习进程0.25 自定义控件
2019-03-06
多媒体文件格式全解说(下)--图片
2019-03-06