HJ15 求 int 型正整数在内存中存储时 1 的个数
描述
输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。
数据范围:保证在 32 位整型数字范围内
输入描述:
输入一个整数(int 类型)
输出描述:
这个数转换成 2 进制后,输出 1 的个数
示例 1
输入:
5
输出:
2
示例 2
输入:
0
输出:
0
题解
位运算
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int a = sc.nextInt();
int res = 0;
for (int i = 31; i >= 0; i--) {
if ((a & 1) == 1) {
res++;
}
// 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。
a = a >>> 1;
}
System.out.println(res);
}
}
}
进制转换计算
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
// 输入一个整数(int类型)
int a = in.nextInt();
// 转换为二进制
String s = Integer.toBinaryString(a);
int l1 = s.length();
// “1” 替换为 “”
int l2 = s.replaceAll("1", "").length();
System.out.println(l1-l2);
}
}
}