大数进制转换

题目(北大)

将一个长度最多为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 v = new Vector(); // 十进制转换为二进制数
            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();
    }
    
}

你可能感兴趣的:(大数进制转换)