判断一个整数二进制下有就几个1
算法思想
第一步: 8 - 1 = 7
1000 - 0001 = 0111
第二步: 8 & 7 = 0
1000
&
0111
———————————
0000
我们可以发现这样一个规律:
a-1
当a的二进制数不够时会进位,直到消去原有的1为止,
此时虽然原有的1消除了,但是其他位置原来的0被替换成了1
此时与原数字进行&运算即可消除进位补上来的0
import java.util.*;
public class Text{
public static void main(String[] args) {
System.out.println("输入一个数字");
Scanner x=new Scanner(System.in);
int a=x.nextInt();
System.out.println(Integer.toString(a, 2));
int count=0;
while(a!=0) {
a=(a-1)&a;
count++;
}
System.out.println(count);
}
}