BigInteger类
- 作用
- 优势与劣势
- 如何创建
- 常用方法
- 大数相加
- 大数相乘
- 大数相减
- 大数相除
- 大数取余数
- 大数绝对值
- 大数比较大小
- 大数中比较大的和比较小的数
作用
在Java中,由CPU原生提供的整型最大范围是64位long型整数。使用long型整数可以直接通过CPU指令进行计算,速度非常快。
如果我们使用的整数范围超过了long型怎么办?这个时候,就只能用软件来模拟一个大整数。java.math.BigInteger就是用来表示任意大小的整数。BigInteger内部用一个int[]数组来模拟一个非常大的整数
//源码
final int[] mag; //利用一个整形数组来模拟一个超级大的整数
优势与劣势
与long型整数运算比,BigInteger不会有范围限制,但缺点是速度比较慢。
如何创建
BigInteger b=new BigInteger("字符串");
BigInteger b=BigInteger.valueOf(1);
常用方法
大数相加
a.add(b); 返回相加后的结果
大数相乘
a.multiply(b); 返回相乘后的结果
大数相减
a.subtract(b); 返回相减后的结果
大数相除
a.divide(b); 返回相除后取整的结果
大数取余数
a.remainder(b); 返回去余数后的结果
大数绝对值
BigInteger c=a.abs(); 返回大数的绝对值
大数比较大小
BigInteger a=new BigInteger(num1);
BigInteger b=new BigInteger(num2);
System.out.println( a.compareTo(b));
大于返回1,小于返回-1,相等返回0
大数中比较大的和比较小的数
BigInteger a=new BigInteger(num1);
BigInteger b=new BigInteger(num2);
System.out.println(a.max(b)); 返回较大的大数
System.out.println(a.min(b)); 返回较小的大数
还有这么多方法,也就不再一一列举了
BigInteger abs() 返回大整数的绝对值
BigInteger add(BigInteger val) 返回两个大整数的和
BigInteger and(BigInteger val) 返回两个大整数的按位与的结果
BigInteger andNot(BigInteger val) 返回两个大整数与非的结果
BigInteger divide(BigInteger val) 返回两个大整数的商
double doubleValue() 返回大整数的double类型的值
float floatValue() 返回大整数的float类型的值
BigInteger gcd(BigInteger val) 返回大整数的最大公约数
int intValue() 返回大整数的整型值
long longValue() 返回大整数的long型值
BigInteger max(BigInteger val) 返回两个大整数的最大者
BigInteger min(BigInteger val) 返回两个大整数的最小者
BigInteger mod(BigInteger val) 用当前大整数对val求模
BigInteger multiply(BigInteger val) 返回两个大整数的积
BigInteger negate() 返回当前大整数的相反数
BigInteger not() 返回当前大整数的非
BigInteger or(BigInteger val) 返回两个大整数的按位或
BigInteger pow(int exponent) 返回当前大整数的exponent次方
BigInteger remainder(BigInteger val) 返回当前大整数除以val的余数
BigInteger leftShift(int n) 将当前大整数左移n位后返回
BigInteger rightShift(int n) 将当前大整数右移n位后返回
BigInteger subtract(BigInteger val)返回两个大整数相减的结果
byte[] toByteArray(BigInteger val)将大整数转换成二进制反码保存在byte数组中
String toString() 将当前大整数转换成十进制的字符串形式
BigInteger xor(BigInteger val) 返回两个大整数的异或