算法-求int型正整数在内存中存储时1的个数
题目描述:
输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
输入描述: 输入一个整数(int类型)
输出描述: 这个数转换成2进制后,输出1的个数
示例1:
输入 5
输出 2
来源:牛客网
相似题目及笔记:
位1的个数
思路一:
运用Integer.toBinaryString(int number)
方法
import java.util.Scanner;
public class Test {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int num = input.nextInt();
String tran = Integer.toBinaryString(num);
char[] arr = tran.toCharArray();
int result = 0;
for(int i = 0; i < arr.length; i++){
if(arr[i] == '1') {
result += 1;
}
}
System.out.println(result);
}
}
思路二:
位运算解题
import java.util.Scanner;
public class Test {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int num = input.nextInt();
int result = 0;
while(num >0){
if((num&1)==1){
result +=1;
}
num = num>>>1;
}
System.out.println(result);
}
}
笔记:
将数字转化为二进制可以用Integer.toBinaryString(int number)
方法,输入一个数字,输出为String
类型的这个数字的二进制。