我是靠谱客的博主 正直豌豆,最近开发中收集的这篇文章主要介绍判断一个二进制数字有多少个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

最后

以上就是正直豌豆为你收集整理的判断一个二进制数字有多少个1----java实现的全部内容,希望文章能够帮你解决判断一个二进制数字有多少个1----java实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部