这个题目会有多个解法:

需要判断n的二进制有几个1

first:通过n向右移位&1,如果n的最后为1,那么与1结果为1,(相信大家都会与运算,hashmap就是用与运算)以此来实现,循环判断有多少个1,结束条件为n=0;

second:上述方法有一个缺陷,就是当n为有符号数字时,才用n==0的结束条件会发生死循环,那么我们可以通过移位1来实现,也就是有每次比较去把1向左移,一次来比较

前两种属于常规做法,下面来说一种技巧性的做法

比如:n=1001,每次将n-1,那么第一次就是1000,使用n&(n-1)→1001&1000=1000,这是第一次计算,第二次1000&0111=0

两次运算,而1001中有两个1;   如果看不懂的可以自己写写,感受下,就能体会了;

上代码:

public void showOne(int n){

if(n==0){

System.out.println("0");

return;

}

int count=0;

while(n!=0){

count++;

n=n&(n-1);

}

System.out.println(count);

}

出处来自剑指offer

java 判断数字二进制有几位_判断一个二进制数字有多少个1----java实现相关推荐

  1. java中的复合数据类型是什么_【填空题】类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素。一个类的实现包括两部分:____和_____....

    [填空题]类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素.一个类的实现包括两部分:____和_____. 更多相关问题 [名词解释] 观叶树木 [单选] 开花时有浓郁香气的树种是 ...

  2. java未知对象调用其某个方法_引用一个类的属性或调用其方法,必须以这个类的对象为前缀。...

    [多选题]根据<建设工程项目管理规范>(GB/T50326-20 17 )施工项目经理应履行的职责有( ) [判断题]数组作参数被使用时,数组名后必须加方括号 [判断题]方法中最多能有一个 ...

  3. java set第n位_数据结构与算法——常用数据结构及其Java实现

    本文采用Java语言来进行描述,帮大家好好梳理一下数据结构与算法,在工作和面试中用的上.亦即总结常见的的数据结构,以及在Java中相应的实现方法,务求理论与实践一步总结到位. 常用数据结构 数组 数组 ...

  4. 用Java计算圆周率的十亿位_新世界纪录:谷歌将圆周率计算到 31 万亿位

    为了挑战更精确的圆周率,谷歌工程师 Emma Iwao 在25台谷歌云的虚拟机上,执行专为圆周率设计的算法,计算出31万亿数字的圆周率. 3.1415926,相信不少人都背诵过这串数字,并将它代入算式 ...

  5. java判断时间是否超过24小时_判断两个日期是否超过24小时!

    print?public class Test { public static void main(String[] args) { String date1="2013-06-24 12: ...

  6. java判断二维数组是否空_判断二维数组是否为空

    在Java程序设计里面,相信大部分人都知道如何判断一个一维数组是否为空,示例如下: public int primeNumberCount(int[] array){ if(array==null|| ...

  7. java判断两个矩形是否相交_判断矩形相交以及求出相交的区域

    问题:给定两个矩形A和B,矩形A的左上角坐标为(Xa1,Ya1),右下角坐标为(Xa2,Ya2),矩形B的左上角坐标为(Xb1,Yb1),右下角 坐标为(Xb2,Yb2). (1)设计一个算法,确定两 ...

  8. java中数组属于哪种类型_判断(2分) Java中数组的下标只能是各种整数数据类型

    参考答案如下 判断比强度是材料轻质高强的指标. 中数组的只能种整当用户访问JSP文件时,对于HTML标签以及文本的输出形式是() 下标型下面选项中,使用post方式提交name="传智播客& ...

  9. JAVA中for循环缩制表位_用vim中的空格替换制表符

    我想将tab转换为gVim中的空格. 我_vimrc下行添加到我的_vimrc : set tabstop=2 它可以在两个空格处停止,但它仍然看起来像是插入了一个tab键(我尝试使用h键来计算空格) ...

最新文章

  1. 海量秋招面试资料等你来拿!你离大厂也许并不远
  2. 《征服C指针》作者语录
  3. CI框架 守护进程nohup让PHP以常驻内存的形式执行订阅消息
  4. 在账户确定类型KOFI没有找到总账科目
  5. GDCM:将PAPYRUS 3.0文件转换为dcm文件的的测试程序
  6. 浅析 public static void main(String[] args)
  7. 谈通过测试与失败测试
  8. 走进 Cake for .NET
  9. IP地址与MAC地址的区别
  10. CV Code | 计算机视觉开源周报 20190701期
  11. 基于Matlab的跨孔CT胖射线追踪算法(三)
  12. 【前端周刊】20190606
  13. oracle 结构化语言查询 DML DDL DCL
  14. android 手势操作垂直滑动,Android-水平和垂直方向都可滑动的RecycleView
  15. 设计模式---工厂方法模式(c++实现)
  16. 俄罗斯方块c语言代码 vc 6.0,VC++6.0俄罗斯方块代码
  17. Viterbi算法(维特比算法)
  18. js 文件下载请求两种方式
  19. 【win7黑屏终结者】win7电脑登录账户后黑屏(只有鼠标箭头)问题
  20. 2-管理Audio焦点(Managing Audio Playback)

热门文章

  1. Linux系统时间和硬件时间设置
  2. Android 自定义View以及ValueAnimator学习
  3. FLEX组件AnyChart实例教程.
  4. Downloader Middlewares反反爬虫【学习笔记04】
  5. C++异常以及错误处理
  6. java char 空_2020重新出发,JAVA入门,数据类型
  7. 一些自己编写的字符串操作函数
  8. RSA加密-解密以及解决超长内容加密失败解决
  9. pynput模块—键盘鼠标操作和监听
  10. 【HNOI2013】数列