大数进制转换

题目(北大)

将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。

做法

使用 java 的 BigInteger类

代码

import java.math.BigInteger;
import java.util.Scanner;
import java.util.Vector;

public class Main {

    
    public static void main(String[] args) {
        String s1 = new String();
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()) {
            s1 = scanner.nextLine(); // 输入一个十进制数
//          System.out.println(s1);
            BigInteger b1 = new BigInteger(s1);
            BigInteger b2 = new BigInteger("2");
            BigInteger zero = new BigInteger("0");
            Vector<BigInteger> v = new Vector<BigInteger>(); // 十进制转换为二进制数
            BigInteger[] arr = b1.divideAndRemainder(b2);
            v.add(arr[1]); // 存储余数
            BigInteger div = arr[0];
            while(!arr[0].equals(zero)) {
                arr = div.divideAndRemainder(b2);
//              System.out.println(arr[0] + " " + arr[1]);
                v.add(arr[1]);
                div = div.divide(b2);
            }
            // v 中存储的即为逆序的二进制数
            // 将二进制数转换为十进制数
            for(int i = v.size()-1; i >= 0; i--) {
                System.out.print(v.get(i));
            }
            System.out.println("");
        }
        scanner.close();
    }
    
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容