如何打印一个数2进制里包含多少个1

来源:百度知道 编辑:UC知道 时间:2024/05/29 22:05:58
如何用JAVA打印 :

给出一个任意10进制的数,然后打印其2进制形式的时候 里面包含多少个1

//恩,方法很多,上面的方法是可以的,我也提供一种方法
//忘了说一点,上面的方法没考虑负数
public class TestOne{
public static void getNum(int number){
String s = Integer.toBinaryString(number);
int num = 0;
for(int i=0;i<s.length();i++){
char sd = s.charAt(i);
if(sd=='1')num += 1;
}
System.out.println("十进制: "+number+"\n二进制: "+s+"\n二进制中1的个数: "+num);
}
//测试十进制数100的信息
public static void main(String args[]){
TestOne.getNum(100);
}
}

不写程序了,给你一个思路:
将原数和2取余,有获得1的话记一次,获得0的话不计。
然后将原数除以2,结果再和2取余,有获得1的话记一次,获得0的话不计。
接着原数除以4(就是2*2),结果再和2取余,有获得1的话记一次,获得0的话不计。
然后原数除以8(就是2*2*2),结果再和2取余,有获得1的话记一次,获得0的话不计。
依次类推直到需要除以的数达到或超过原数的一半为止,这里累计下来的次数就是二进制里面有几个1了。

public class A{
public static void main(String[] args){
print(25);//25是任意给的一个10进制数
}

public static void print(int n){
StringBuffer str=new StringBuffer();
int k=0