题目
请实现一个函数,输入一个整数,输出该数二进制表示中1的个数
答案
public class T1_4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
//打印2进制
System.out.println(Integer.toString(N,2));
int count = 0;
//按位比对
//整数为32位
for (int i = 0; i < 32; i++) {
//每一次将1左移对应的位数,在进行与运算,如果N在该位上是1,则结果为1,再与后面的1<<i进行==时结果就为true
if ((N&(1<<i))==(1<<i)){
count++;
}
/**
* 举例:
* 如果第三次循环,即1左移3位跟N对比
* 假定N前4位为1001,即为1001与1000(1左移三位的结果)进行与运算,结果为1000
* 该结果再与后面的1左移三位的值进行==,结果为true,所以count++
*/
}
System.out.println(count);
}
}