二进制中1的个数
解法1:数字1向左移动
public static void main(String[] args) {
System.out.println("输入数字:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println(Integer.toString(n,2));
int c=0;
for(int i=0;i<32;i++) {
if((n&1<<i)==(1<<i)){
c+=1;
}
}
System.out.println("统计1有:"+c);
}
解法二:原数向右挪补零
public static void main(String[] args) {
System.out.println("输入数字:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println(Integer.toString(n,2));
int c=0;
for(int i=0;i<32;i++) {
if(((n>>>i)&1)==1) {
c++;
}
}
System.out.println("统计1有:"+c);
}
解法3:原数-1
public static void main(String[] args) {
System.out.println("输入数字:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println(Integer.toString(n,2));
int c=0;
while(n!=0) {
n=(n-1)&n;
c++;
}
System.out.println("统计1有:"+c);
}
1.5是不是2的整数次方
public static void main(String[] args) {
System.out.println("输入数字:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
if(((n-1)&n)==0) {
System.out.println("是");
}
else {
System.out.println("不是");
}
}