HJ15 - 求int型正整数在内存中存储时1的个数 - 华为
(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); } }