描述
对于给定的 int 型的十进制正整数 n ,统计其在内存中存储时 1 的个数。换句话说,即统计其二进制表示中 1 的个数。
输入描述:
在一行上输入一个整数 n(0≦n<231) ,代表给定的数字。
输出描述:
在一行上输出一个整数,代表 n 的二进制表示中 1 的个数。
解法一(java):
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = in.nextInt();
int result = 0;
int carray = 1;
while (num != 0) {
if ((num & carray) == 1) {
result++;
}
num = num >> 1;
}
System.out.println(result);
}
}
思路:使用一个循环,让它和1进行与运算,要是结果为1就表示,最后一位是1,结果+1,然后再将输入的数往右移一位(就表示去掉了最后一位),循环直到输入的数为0为止。