作业内容:求一个整数,在内存当中存储时,二进制1的个数。
编程软件:IDEA
代码:
public class TestDemo {
public static void main(String[] args) { //psvm main函数的快捷键
//判断整数中2进制1的个数
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
//以整数15为例 15 - 0000 1111
// 0000 1111 - 15
// & 0000 0001 - 1
// 0000 0001 若与1不为0 count++;
// 0000 0111 - 15 右移一位之后继续判断
// & 0000 0001 - 1
// 0000 0001 若不为0 count++;
//依次右移与1判断,直至为0
int count = 0;
for(int i=0;i<32;i++) { //一共要移32次
if(((n >> i) & 1) == 1) { //i是右移的位数,右移之后与1看结果是否是1
count++;
}
}
System.out.println("count:"+ count);
}
}
结果: