欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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