当前位置: 首页 > news >正文

JavaSE基础50题:7. 写一个方法返回参数二进制中1的个数(3种方法!)

文章目录

    • 概述
    • 方法1
    • 方法2
    • 方法3

概述

返回参数中二进制中1的个数。 如: 15(十进制) —— 0000 1111(二进制) —— 4个1

①我们把二进制的数字的每一位都&1,其中:1&1=1 、0&1=0
②用无符号右移(>>>)来让每一位都与1相比较。

在这里插入图片描述

方法1

【概述】
用 for 循环,参数是32位的,所以我们循环32次。
【代码】

import java.util.Scanner;public static void fac1(){Scanner sc = new Scanner(System.in);int n = sc.nextInt();int count = 0;for (int i = 0; i < 32; i++) { //有32位,移32次if (((n >>> i) & 1)== 1) {count++;}}System.out.println(count);}public static void main(String[] args) {fac1();}

【运行结果】
在这里插入图片描述

方法2

【概述】
用while循环来做,直接比较n是否为0,这样就不用管循环了多少次。

【代码】

 public static void fac2() {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int count = 0;while (n != 0) {if ((n & 1) == 1) {count++;}n = n >>> 1;}System.out.println(count);}
public static void main(String[] args) {fac2();}

【运行结果】
在这里插入图片描述

方法3

【概述】
用参数n & (n-1),每&一次都会少一个1,直到结果为0的时候结束。
如:7
在这里插入图片描述
【代码】

 public static void fac3() {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int count = 0;while (n != 0) {n = n & (n-1);count++;}System.out.println(count);}public static void main(String[] args) {fac3();}

【运行结果】
在这里插入图片描述

相关文章:

  • go自定义端口监听停用-------解决端口被占用的问题
  • Vue3 setup语法糖
  • 用Java写一个王者荣耀游戏
  • 用C++和python混合编写数据采集程序?
  • 【1day】华天软件 OAworkFlowService接口SQL注入漏洞学习
  • 基于英特尔平台及OpenVINO2023工具套件优化文生图任务
  • MongoDB的原子性和多文档事务处理
  • 如何绕过某讯手游保护系统并从内存中获取Unity3D引擎的Dll文件
  • ChatGPT 的 18 种玩法,你还不会用吗?
  • 计算机组成学习-数据的表示和运算总结
  • 【服务部署】常用内网穿透方案
  • 【深度学习实验】图像处理(四):PIL——自定义图像数据增强操作(图像合成;图像融合(高斯掩码))
  • Xshell全局去除提示音
  • 阿里云ACE认证之国际版与国内版对比!
  • Java数据结构之《构造哈夫曼树》题目
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Angular 4.x 动态创建组件
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • iOS | NSProxy
  • IOS评论框不贴底(ios12新bug)
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 爱情 北京女病人
  • 分类模型——Logistics Regression
  • 诡异!React stopPropagation失灵
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 力扣(LeetCode)22
  • 排序算法之--选择排序
  • 删除表内多余的重复数据
  • 中文输入法与React文本输入框的问题与解决方案
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #AngularJS#$sce.trustAsResourceUrl
  • #ifdef 的技巧用法
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #pragma multi_compile #pragma shader_feature
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (9)STL算法之逆转旋转
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转载)hibernate缓存
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .Net Core和.Net Standard直观理解
  • .NET/C# 的字符串暂存池
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET的微型Web框架 Nancy
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • @GlobalLock注解作用与原理解析
  • @TableLogic注解说明,以及对增删改查的影响
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [2018-01-08] Python强化周的第一天
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [AX]AX2012 SSRS报表Drill through action