Java将十进制数转化为二进制数,递归和循环方法实现
程序员文章站
2022-07-15 08:22:12
...
Java的包装类Integer已经有实现此功能的方法:
Integer.toBinaryString(num);
自己来写的话,采用熟悉的除2取余方法,递归和循环都可以实现。
public class The1stChapter {
/**
* 通过递归方法实现的将整数化为二进制数,以字符串形式给出
* @param num 待转化的整数
* @return 转化完成的二进制数字符串
*/
public static String DecimalToBinaryByRecursion(int num) {
int quotient = num / 2;
int remainder = num % 2;
String result = "";
if (quotient == 0) {
return result + remainder;
}
return DecimalToBinaryByRecursion(quotient) + remainder;
}
/**
* 通过循环方法实现的将整数化为二进制数,以字符串形式给出
* @param num 待转化的整数
* @return 转化完成的二进制数字符串
*/
public static String DecimalToBinaryByLooping(int num) {
StringBuilder result = new StringBuilder();
for (int i = num; i > 0; i /= 2) {
result.insert(0, (i % 2));
}
return result.toString();
}
}
注:循环方法中也可以简单写为:
String result = "";
for (int i = num; i >0; i /= 2) {
result = (i % 2) + result;
}
return result;
这种采用运算符“+”的方法在计算一个比较大的数的时候,循环次数多,运行效率会比较低,不过这里一般感受不出来有啥区别。
下面是测试:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("Input a decimal integer:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
String binaryNum1 = The1stChapter.DecimalToBinaryByRecursion(num);
String binaryNum2 = The1stChapter.DecimalToBinaryByLooping(num);
System.out.println("The binary integer:");
System.out.println(binaryNum1);
System.out.println(binaryNum2);
sc.close();
}
}
结果
Input a decimal integer:
1998
The binary integer:
11111001110
11111001110
Process finished with exit code 0