如题,上代码:
public class DecToBin {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
Integer dec=sc.nextInt();
//调用函数之前要进行非零及非负判断,这里我没写,你们自己注意加
System.out.println("dec:"+dec+",DecToBin:"+DecToBin(dec)+",DecToBinRec:"+DecToBinRec(dec));
}
//循环实现
public static String DecToBin(Integer dec) {
StringBuffer sb=new StringBuffer();
while(dec!=1) {
sb.append(dec%2==0?"0":"1");
dec>>=1;
}
sb.append("1");
return sb.reverse().toString();//反转输出,为什么自己去看10进制转2进制的数学计算方式
}
public static String DecToBinRec(Integer dec) {
StringBuffer sb=new StringBuffer();
rec(dec,sb);
return sb.reverse().toString();//反转输出
}
//递归实现
public static void rec(Integer temp,StringBuffer sb) {
if(temp==1) {
sb.append("1");
return;
}
sb.append(temp%2==0?"0":"1");
rec(temp>>=1,sb);
}
}
实际效果:
5646545
dec:5646545,DecToBin:10101100010100011010001,DecToBinRec:10101100010100011010001