概述
这个题目会有多个解法:
需要判断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
最后
以上就是正直豌豆为你收集整理的判断一个二进制数字有多少个1----java实现的全部内容,希望文章能够帮你解决判断一个二进制数字有多少个1----java实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复