it编程 > 编程语言 > Java

一文让你彻底学会Java之BigInteger类常用操作

39人参与 2025-04-26 Java

biginteger 的基本概念

1. 什么是 biginteger

2. 特点

biginteger 的构造方式

构造函数

biginteger 提供了多个构造器用于创建实例。

1. 使用字符串构造

这是最常用的构造方法,支持任意大小的数字:

biginteger bigint = new biginteger("123456789012345678901234567890");

2. 使用基本数据类型的转换

通过静态方法 biginteger.valueof 将 int 或 long 转换为 biginteger

biginteger bigint = biginteger.valueof(123456789l);

3. 从二进制、八进制、十六进制等进制构造

支持指定进制的字符串构造:

biginteger bigint = new biginteger("1010", 2); // 二进制 -> 十进制:10
biginteger hexint = new biginteger("1a", 16); // 十六进制 -> 十进制:26

4. 生成随机数

通过构造一个随机数:

biginteger randombigint = new biginteger(50, new random()); // 生成 50 位随机数

5. 常用常量

biginteger.zero   // 表示 0
biginteger.one    // 表示 1
biginteger.ten    // 表示 10

biginteger 的常用操作

1. 算术运算

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

混合运算:加法、乘法

所有的运算都是链式的。例如:

biginteger result = a.add(b).multiply(a).divide(b);

2. 幂运算

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

底层优化:

3. 比较和最大最小值

比较大小

compareto 方法返回以下结果:

int compare = a.compareto(b);

最大值和最小值

biginteger max = a.max(b);
biginteger min = a.min(b);

4. 位运算

按位操作

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 位

5. 数学相关

求绝对值

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); // 参数为测试的可信度

6. 进制转换

string decimalstr = a.tostring();
string binarystr = a.tostring(2);  // 二进制
string hexstr = a.tostring(16);   // 十六进制

优化

1. 不可变性

biginteger 的每次操作都会返回一个新对象。如果需要频繁修改值,可以考虑复用变量以减少对象创建。

2. 注意内存消耗

超大整数会消耗较多内存。例如:

biginteger big = new biginteger("9".repeat(1000000)); // 100 万位数字

总结 

到此这篇关于java之biginteger类常用操作的文章就介绍到这了,更多相关java biginteger类常用操作内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

Java环境安装和编写并运行第一个程序(使用 VSCode 轻松上手)

04-26

Spring 框架@Async 注解详解

04-26

SpringBoot+Netty+Vue+WebSocket实现在线聊天

04-26

Java 并发编程面试题Future 模式及实现方法

04-26

在MyBatis-Plus中关闭SQL日志输出的方法

04-26

深入探讨Spring Statemachine在Spring中实现状态机的过程

04-26

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论