1 前言

Java 提供了 BigInteger(大整数)类和 BigDecimal(大浮点数)类用于大数运算,这两个类都继承自 Number 类(抽象类)。由于 BigInteger 在大数运算中更常见,本博客只介绍 BigInteger,另外也介绍下 Java 内置的进制转换函数,非常好用!!!

2 BigInteger 常用方法

包:import java.math.BigInteger;

//初始化
public BigInteger(String val)
public BigInteger(byte[] val)
public static BigInteger valueOf(long val)

//四则运算
public BigInteger add(BigInteger val)  //加法
public BigInteger subtract(BigInteger val)  //减法
public BigInteger multiply(BigInteger val)  //乘法
public BigInteger divide(BigInteger val)  //除法(整除)

//取余(取模)
public BigInteger mod(BigInteger m)
public BigInteger remainder(BigInteger val)  

//其他基本运算
public BigInteger negate()  //取反
public BigInteger abs()  //绝对值
public BigInteger pow(int exponent)  //指数
public BigInteger max(BigInteger val)  //较大者
public BigInteger min(BigInteger val)  //较小者


public BigInteger gcd(BigInteger val)  //最大公约数

//判断与比较
public int compareTo(BigInteger val)  //比较大小
public boolean equals(Object x)  //判断是否相等

//十进制转换为其他进制
public byte[] toByteArray()  //转换为二进制数组
public String toString(int radix)  //转换为 radix 进制数,2<=radix<=36,否则令radix=10

//其他进制转换为十进制
public BigInteger(String val, int radix)  //将 radix 进制的val转换为十进制,2<=radix<=36,否则抛出NumberFormatException异常

3 Integer 类中进制转换

由于数字只能由 '0'-'9' 和 'a'-'z' 表示,因此最多只能是36进制。在进制转换时,经常会用到参数 radix (基数),表示进制数,因此 2<=radix<=36。当 radix 不在此区间时,若是十进制转换为 radix 进制,令 radix=10;若是 radix 进制转换为十进制,抛出NumberFormatException异常.

3.1 十进制转换为其他进制

public static String toBinaryString(int i)  将i转换为2进制
public static String toOctalString(int i)  将i转换为8进制
public static String toHexString(int i)  将i转换为16进制
public static String toString(int i, int radix)  将i转换为 radix 进制,2<=radis<=36,否则令radis=10

3.2 其他进制转换为十进制

//将 radix 进制数s转换为十进制,2<=radix<=36,否则抛出NumberFormatException异常
public static int parseInt(String s, int radix) throws NumberFormatException
public static Integer valueOf(String s, int radix) throws NumberFormatException

3.3 任意进制之间的转换

//将 m 进制数转换为 n 进制数
public static String transform(String s_m,int m,int n) {
    Integer tem=Integer.parseInt(s_m,m); //将m进制的s_m转换为10进制
    String s_n=Integer.toString(tem,n); //将tem转换为n进制
    return s_n;
}

​ 声明:本文转自大数运算(BigInteger)与进制转换