0
点赞
收藏
分享

微信扫一扫

1.4一题三解:二进制中1的个数


1.4一题三解:二进制中1的个数_i++


题解1:

1.4一题三解:二进制中1的个数_java_02


int的数值是三十二位,则用x&1来参与计数,每次循环1向左移一位

&的功能:按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0

import java.util.Scanner;

public class 一题三解二进制中1的个数 {//这里的名字必须跟你自己定义的名字一样

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc =new Scanner(System.in);
int N=sc.nextInt();
//Integer.toString(int par1,int par2),par1表示要转成字符串的数字,par2表示要转成的进制表示
System.out.println(Integer.toString(N, 2));
int count =0;
for(int i=0;i<32;i++)
{
if((N&(1<<i))==(1<<i)) {//计算时,N是以二进制来参与运算的
count++;
}
}
System.out.println(count);
}

}

题解二:

1.4一题三解:二进制中1的个数_蓝桥杯_03

x&1中,每次循环x向右移一位,1不移动

思路3:

1.4一题三解:二进制中1的个数_java_04


1.4一题三解:二进制中1的个数_i++_05


1.4一题三解:二进制中1的个数_算法很美_06

计算N=((N-1)&N),知道N等于0,设置一个计数器count

import java.util.Scanner;

public class 一题三解二进制中1的个数 {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc =new Scanner(System.in);
int N=sc.nextInt();
//Integer.toString(int par1,int par2),par1表示要转成字符串的数字,par2表示要转成的进制表示
System.out.println(Integer.toString(N, 2));
int count =0;
for(int i=0;i<32;i++)
{
if((N&(1<<i))==(1<<i)) {//计算时,N是以二进制来参与运算的
count++;
}
}
System.out.println(count);

count =0;
for(int i=0;i<32;i++)
{
if(((N>>>i)&1)==1)
count++;
}
System.out.println(count);

count =0;
while(N!=0)
{
N=((N-1)&N);
count++;
}
System.out.println(count);
}

}


举报

相关推荐

0 条评论