(java实现)
问题
题目描述:
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
输入描述:
输入一个整数(int类型)
输出描述:
这个数转换成2进制后,输出1的个数
示例1:
输入
5
输出
2
问题分析:
两种方法,一种是进行与(“&”)运算,直接统计‘1’的个数,如法1;另一种是转为二进制,再统计‘1’的个数,如法2;
相关知识:
整数转为二进制字符串:String s = Integer.toBinaryString(number);
算法实现:
略
参考代码:
解法1
import java.util.*;
public class Main {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int number = input.nextInt();
int count = 0;
while (number>0)
{
int flag = number&1;
if (1 == flag)
count++;
number = number>>1;
}
System.out.println(count);
}
}
解法2
import java.util.*;
public class Main {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int number = input.nextInt();
int count = 0;
String s = Integer.toBinaryString(number);
char[] ch = s.toCharArray();
for (int i=0; i<ch.length; i++)
{
if ('1' == ch[i])
count++;
}
System.out.println(count);
}
}