BigInteger类详解

一.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

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值