题目:从键盘输入某个十进制整数,转换成对应的二进制整数并输出。
package chap3_方法;
/**
* 十进制转二进制
*/
import java.util.Scanner;
public class Test08 {
public static void main(String[] args) {
//5.系统自带转二进制方法,对比以验证对错
System.out.println(Integer.toBinaryString(111));
System.out.println("============================");
//3.递归 栈 输出
to_base_n(111,2);
System.out.println("\n==========================");
//4.
toBinary(111);
System.out.println("============================");
//1.int + string
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个十进制数:");
int num1 =scanner.nextInt();
String str="";
while (num1!=0){
int mod1 = num1 % 2;
num1 = num1 / 2;
str= mod1 + str;//此语句不等于str=str+mod 与 str += mod 此处+是字符串连接符
// System.out.print(mod); //逆序输出
}
System.out.println("转换为二进制数为:"+str);
scanner.close();
System.out.println("============================");
//2.
int num2 =111; //需要转二进制的数
int t = 0; //用来记录位数
int bin = 0; //用来记录最后的二进制数
int mod2 = 0; //用来存储余数
while(num2 != 0){
mod2 = num2 % 2;
num2 = num2 / 2;
bin += mod2* Math.pow(10, t);
t++;
}
System.out.println(bin);
}
//3.递归 栈 输出
public static void to_base_n(int num3,int t){//int t 用来记录二进制
int mod3;
mod3 = num3 % t;
if (num3 >= 1){//如果n>=0 条件一直满足 导致 StackOverflowError:堆栈溢出错误
// System.out.print(mod1); //逆序输出
to_base_n(num3/t,t);
System.out.print(mod3); //栈 输出
}
}
//4.
private static void toBinary(int input) {
int n = 1;
StringBuilder result = new StringBuilder();
for (int i = 0; i < 32; i++) {
result.append((input>>i) & n);
}
System.out.println(result.reverse());
}
}