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

这个题目会有多个解法:

需要判断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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cesss

件(最大上传3个附件,每个件(最大上传3个附件,每个件(最大上传3个附件,每个件(最大上传3个附件,每个转载于:https://blog.51cto.com/wuxh868/402629

python知识点1

1.if __name__ main 的作用 在此函数下的代码,只有当该文件运行的时候才能运行。当前文件如果被当做模块被其他文件导入,该函数下的代码就不会被执行。2.__init__方法在类被实例化之前,先使用__init__方法进行一些初始化操作,如…

java语句中switch_Java中的switch-case语句

在codewar里使用了以下switch-case语句,不熟练出错,所以记录一下。class ArithmeticFunction {public static int arithmetic(int a, int b, String operator) {int result0;switch(operator){case "add":resultab;case "subtract":…

使用valgrind检测内存问题

valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。1valgrind安装可以到官网下载最新的源码包:valgrind官网下载,也可以直接使用 c_utils/debug/valgrind 目录提供的 valgrind-3.13.0.tar.bz2 源码包。首先解压源码包tar xjf valgri…

[转]一个人脸检测器

//本文使用到Emgu.CV库,该库是C#语言对OpenCV的封装,以下是一个列子程序的改正版本。using System; using System.Collections.Generic; using System.Text; using Emgu.CV.Structure; using Emgu.CV;namespace VSL.Plugin.TrackingSystem.SimpleTrackin…

项目中cxf和weblogic整合时报错的问题

GJYW项目使用的weblogic版本是10.3.6,cxf使用的版本是3.1.4 在将项目部署到weblogic服务器上时就会报错,通过下面的方式可以解决weblogic和cxf框架在一起报错的问题(解决了本项目报错的问题,未必全部适用):…

下周开幕!给深圳的嵌入式和电子工程师准备的嘉年华来了

我和电子圈老江认识了很久,应该是2012年,小龙第一次参加电子圈年会,那年他年会中奖的奖品送给我。后来,我也加入了电子圈的QQ群,早些年的时候,大家都喜欢在QQ群聊天,后来才慢慢转到微信群。老江…

java过去配置文件的值_java对.properties配置文件操作

实现运用Java.util.Properties来进行对.properties配置文件操作。配置文件实例:如debug.properties#Tue Mar 21 15:46:17 CST 2017#keyvalueremote.debug.prot7451第一步写个获取文件路径的外部方法//-in- String filePath:配置文件名如debug.properties…

AS3.0中的显示编程(末篇)-- 滤镜(下)

剩下的三种滤镜,因为我自己也不是很懂矩阵啊这些的,只能做些简单的范例和说明了,抱歉!颜色矩阵滤镜、卷积滤镜、置换图滤镜这三种滤镜只能通过AS代码实现。如果说上面的六种滤镜,只是在原图的基础上做些简单的修改&…

这几个朋友,我记得

‍‍昨天的中秋节是在公司加班度过的,末了,在群里看到有人说要是今天还有人加班的话,那他一定是真正的卷王,好了,我是那个中秋节加班的卷王。早上打车去公司,快到公司楼下的时候,司机师傅跟我说…

HOWTO:如何修改InstallShield的运行环境

版权声明: 可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。在InstallShield中,存在一些运行环境的变量,如果我们做了某种选择,之后可能将不再提示,说不定什么时候又想改回来呢,找不到地…

杭电java期末试卷2015_2014年杭州电子科技大学Java期末试卷.doc

2014年杭州电子科技大学Java期末试卷.doc杭州电子科技大学学生考试卷( A )卷考试课程Java语言程序设计考试日期2014年 6月 16日成 绩课程号教师号任课教师姓名考生姓名学号(8位)年级专业注意:所有答案均写在答卷上,写在试卷上无效;(一)单选题(每题2分&am…

深入理解Java线程池:ThreadPoolExecutor

线程池介绍 在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题: 如果并发的请求数量非常多,但每个线程执行的时间…

看嵌入式大神直播,送开发板!

这是一场嵌入式学习者不可错过的直播……以往拿到一个开发板,还要花费时间找资料,向有经验的朋友请教测试过程现在,在捷客直播间,嵌入式大神现场教学,手把手教你如何使用开发板开发一款智能设备9月26日晚,看…

iphone上如何绘制饼图(使用CGContextAddArc)(原创)

CGContextAddArc是一个比较强大的函数,建议仔细看一下iphone的开发文档。 CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, intclockwise) CGContextRef: 图形上下文x,y: 开始画的坐标radius: 半径s…

java实现itchat_GitHub - Xiazki/itchat4j: wechatbot 的java实现,简单搭建了基本框架和实现了扫码登陆,具体网页微信api请参考...

itchat4j 微信自动回复机器人-------------- --------------- ---------------| | | | | || Get UUID | | Get Contact | | Status Notify || | | | | |------------- -------^------- -------^-------| | || ------- --------| | |-------v------ ------------- -------------…

华为宣布:免费培养8000名开发者! 学习免费!实验免费!考证免费!

很多朋友都想储备一些不同领域的新技术以便未来有更好的发展但目前市面上各种教程质量良莠不齐而且想要掌握高阶的开发技术需要耗费大量的时间和精力So,华为云特别推出 互联网技能加油站包含物联网、Python、AI等五大领域,核心技术赋能构建全面技能体系现…

ruby

官网 http://www.ruby-lang.org/en/ https://ruby-china.org/ DOC http://ruby-doc.com/docs/ProgrammingRuby/ http://ruby-doc.org/core-2.2.1/ 六个最酷的Ruby on Rails项目 https://www.ctocio.com/ccnews/20453.html Rake: Ruby中任务构建工具rake的入门 https://www.cnbl…

java 两个点球面距离_计算球面两点间距离实现Vincenty+Haversine

vincenty公式 精度很高能达到0.5毫米,但是很慢。Haversine公式半正矢公式,比vincenty快,精度没有vincenty高,也长使用。-------------------------------------------openlayers中实现的Vincenty-------------------------------…

送20个鼠标垫

之前发的朋友圈,里面晒了一个鼠标垫,大家都挺喜欢的,这次决定送30个给大家,没有什么规则,直接抽奖就好了。在下方的公众号回复【1001】获取抽奖小程序。因为之前好几次抽奖,因为时间比较长导致大家忘记填写…