Java将十进制数转化为二进制数,递归和循环方法实现

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
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值