一.BigInteger简介
BigInteger类所在的包
java中可以使用BigInteger操作大整数,也可以转换进制。如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作。这些大数都会以字符串的形式传入。
二.BigInteger类常用方法
1.BigInteger(String value):构造方法,将value字符串变成BigInteger类型数据。
2.BigInteger add(BigInteger value):加法,求两个BigInteger类型数据的和。
3.BigInteger subtract(BigInteger value):减法,求两个BigInteger类型数据的差。
4.BigInteger multiply(BigInteger value):乘法,求两个BigInteger类型数据的积。
5.BigInteger divide(BigInteger divisor):除法,求两个BigInteger类型数据的商。
6.BigInteger modInverse(BigInteger m):求模,求BigInteger类型数据对m求模。
7.BigInteger remainder(BigInteger divisor):求余数,求BigInteger类型数据除以divisor的余数。
8.BigInteger max(BigInteger value):最大数,求两个BigInteger类型数据的最大值。
9.BigInteger min(BigInteger value):最小数,求两个BigInteger类型数据的最小值。
10.BigInteger gcd(BigInteger value):最大公约数,求两个BigInteger类型数据的最大公约数。
11.BigInteger abs():绝对值,求BigInteger类型数据的绝对值。
12.BigInteger negate():相反数,求BigInteger类型数据的相反数。
代码实现
BigInteger a = new BigInteger("15");
BigInteger b = new BigInteger("10");
BigInteger c = new BigInteger("-10");
BigInteger d = new BigInteger("2");
BigInteger add_result = a.add(b);
BigInteger subtract_result = a.subtract(b);
BigInteger multiply_result = a.multiply(b);
BigInteger divide_result = a.divide(b);
BigInteger modinverse_result = a.modInverse(d);
BigInteger remainder_result = a.remainder(b);
BigInteger max_result = a.max(b);
BigInteger min_result = a.min(b);
BigInteger gcd_result = a.gcd(b);
BigInteger abs_result = c.abs();
BigInteger negate_result = a.negate();
Log.d("TAG", "15+10=" + add_result);
Log.d("TAG", "15-10=" + subtract_result);
Log.d("TAG", "15*10=" + multiply_result);
Log.d("TAG", "15/10=" + divide_result);
Log.d("TAG", "15对2求模=" + modinverse_result);
Log.d("TAG", "15/10余数=" + remainder_result);
Log.d("TAG", "15和10最大数=" + max_result);
Log.d("TAG", "15和10最小数=" + min_result);
Log.d("TAG", "15和10最大公约数=:" + gcd_result);
Log.d("TAG", "-10的绝对值=" + abs_result);
Log.d("TAG", "15的相反数=" + negate_result);
结果
15+10=25
15-10=5
15*10=150
15/10=1
15对2求模=1
15/10余数=5
15和10最大数=15
15和10最小数=10
15和10最大公约数=:5
-10的绝对值=10
15的相反数=-15
注意:求模时15对10求模报错。
A Mod B(A对B求模)=A-(A div B) * B (div含义为整除)
三.利用BigInteger构造方法转换进制
代码
String string1 = new BigInteger("20", 10).toString(2);
Log.d("TAG", "十进制的20转换成二进制是:" + string1);
String string2 = new BigInteger("20", 10).toString(8);
Log.d("TAG", "十进制的20转换成八进制是:" + string2);
String string3 = new BigInteger("20", 10).toString(16);
Log.d("TAG", "十进制的20转换成十六进制是:" + string3);
String string4 = new BigInteger("110", 2).toString(10);
Log.d("TAG", "二进制的110转换成十进制是:" + string4);
String string5 = new BigInteger("110", 8).toString(10);
Log.d("TAG", "八进制的110转换成十进制是:" + string5);
String string6 = new BigInteger("110", 16).toString(10);
Log.d("TAG", "十六进制的110转换成十进制是:" + string6);
结果
十进制的20转换成二进制是:10100
十进制的20转换成八进制是:24
十进制的20转换成十六进制是:14
二进制的110转换成十进制是:6
八进制的110转换成十进制是:72
十六进制的110转换成十进制是:272