题目描述
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
输入描述:
输入一个整数(int类型)输出描述:
这个数转换成2进制后,输出1的个数输入例子:
5输出例子:
2
思路
十进制转二进制用求余数法,但是之后需要反向输出,这时候就想到用堆栈
import java.util.Scanner;
import java.util.Stack;
public class Main3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Stack<Integer> stack=new Stack<Integer>();//创建一个堆栈
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext()){
int num=scanner.nextInt();//获取输入的整数
//换算2进制并入栈
int temp=num%2;//除以2取余数
do{
num=num/2;
stack.push(temp);
temp=num%2;
}while(num!=0);
//出战判断
int count=0;
while(!stack.isEmpty())
{
int a=stack.pop();
if(a==1)count++;
}
System.out.println(count);
}
scanner.close();
}
}