39人参与 • 2025-04-26 • Java
biginteger
是 java.math
包中的类,专门用于表示任意精度的整数。int
、long
)的精度限制问题。比如:int
的最大值是 2³¹-1(21 亿)。long
的最大值是 2⁶³-1(约 19 位十进制数)。biginteger
。biginteger
是不可变对象,每次运算都会返回新的实例,而不会修改原有对象。biginteger
底层采用 int[]
数组存储数据,每个数组元素存储一部分数字,并通过数学算法进行操作。biginteger
提供了多个构造器用于创建实例。
这是最常用的构造方法,支持任意大小的数字:
biginteger bigint = new biginteger("123456789012345678901234567890");
numberformatexception
。通过静态方法 biginteger.valueof
将 int
或 long
转换为 biginteger
:
biginteger bigint = biginteger.valueof(123456789l);
valueof
方法只支持 long
范围内的数值。支持指定进制的字符串构造:
biginteger bigint = new biginteger("1010", 2); // 二进制 -> 十进制:10 biginteger hexint = new biginteger("1a", 16); // 十六进制 -> 十进制:26
通过构造一个随机数:
biginteger randombigint = new biginteger(50, new random()); // 生成 50 位随机数
biginteger.zero // 表示 0 biginteger.one // 表示 1 biginteger.ten // 表示 10
biginteger a = new biginteger("12345"); biginteger b = new biginteger("67890");
biginteger sum = a.add(b); // 结果:80235
biginteger diff = a.subtract(b); // 结果:-55545
biginteger product = a.multiply(b); // 结果:838102050
biginteger quotient = b.divide(a); // 结果:5
biginteger mod = b.remainder(a); // 结果:12345
divide
是整数除法,不会产生小数部分。所有的运算都是链式的。例如:
biginteger result = a.add(b).multiply(a).divide(b);
biginteger base = new biginteger("2"); biginteger result = base.pow(10); // 2^10 = 1024
biginteger base = new biginteger("2"); biginteger exp = new biginteger("10"); biginteger mod = new biginteger("7"); biginteger modpowresult = base.modpow(exp, mod); // (2^10) % 7 = 2
compareto
方法返回以下结果:
1
:当前对象大于比较对象。-1
:当前对象小于比较对象。0
:两者相等。int compare = a.compareto(b);
biginteger max = a.max(b); biginteger min = a.min(b);
biginteger result = a.and(b);
biginteger result = a.or(b);
biginteger result = a.xor(b);
biginteger result = a.shiftleft(2); // 左移 2 位
biginteger result = a.shiftright(2); // 右移 2 位
biginteger abs = a.abs();
biginteger gcd = a.gcd(b); // 返回 a 和 b 的最大公约数
模反元素是满足以下公式的整数:
( a × x ) % m = 1 (a \times x) \% m = 1(a×x)%m=1
代码示例:
biginteger modinverse = a.modinverse(mod); // 计算 a 的模反元素
boolean isprime = a.isprobableprime(10); // 参数为测试的可信度
string decimalstr = a.tostring();
string binarystr = a.tostring(2); // 二进制 string hexstr = a.tostring(16); // 十六进制
biginteger
的每次操作都会返回一个新对象。如果需要频繁修改值,可以考虑复用变量以减少对象创建。
超大整数会消耗较多内存。例如:
biginteger big = new biginteger("9".repeat(1000000)); // 100 万位数字
到此这篇关于java之biginteger类常用操作的文章就介绍到这了,更多相关java biginteger类常用操作内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论