简介

Java中提供了对于大整数运算的相关类BigIntegerBigInteger的底层会将符号位和绝对值分别存储,绝对值会被分割为几份长度为 32 位的二进制值并存到一个 int 数组当中,比如:
27670116110564327424

[1, 10000000000000000000000000000000, 00000000000000000000000000000000]

[1, -2147483648, 0]

常用方法

方法名称 说明
BigInteger(int num,Random rnd) 获取随机大整数,取值范围$[0,2^{num}-1]$
BigInteger(String val) 用字符串构造一个大整数
BigIntege(String val,int radix) 用字符串构造指定进制的大整数
static BigInteger valueOf(long val) 返回数值为 val 的大整数,对于 long 范围内数字推荐用此方法,是因为当生成的 val 在$[-16,16]$会有优化
BigInteger add(BigInteger val) 返回大整数之和
BigInteger subtract(BigInteger val) 返回大整数之差
BigInteger multiply(BigInteger val) 返回大整数之积
BigInteger divide(BigInteger val) 返回大整数之商
BigInteger mod(BigInteger val) 返回大整数之余
BigInteger[] divideAndRemainder(BigInteger val) 获取商和余数
BigInteger sqrt() 返回大整数的平方根
BigInteger pow(int exponent) 获取大整数的次幂
BigInteger max/min(BigInteger val) 返回最大/最小值
int compareTo(BigInteger val) 如果相等返回 0,大于返回正数,小于返回负数
boolean equals(Object x) 比较是否相同
int intValue(BigInteger val) 转为 int 类型,超出范围数据有误