BigInteger详解

简介:   在Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,理论上能够表示无线大的数,只要计算机内存足够大。 这两个类都在 java.math.* 包中,因此每次必须在开头处引用该包。

   在Java中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,理论上能够表示无线大的数,只要计算机内存足够大。

这两个类都在 java.math.* 包中,因此每次必须在开头处引用该包。

 

构造方法:

BigInteger(byte[] val)
    将包含 BigInteger 的二进制补码表示形式的 byte 数组转换为 BigInteger。
BigInteger(int signum, byte[] magnitude)
    将 BigInteger 的符号-数量表示形式转换为 BigInteger。

 1 import java.math.BigInteger;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         byte []bytes = new byte[]{1,2} ;
 6         BigInteger bigInteger = new BigInteger(bytes) ;
 7 //        将BigInteger的符号-数量表示形式转换为 BigInteger。
 8 //        该符号表示为一个正负号整数值:-1 表示负,0 表示零,1 表示正。
 9 //        该大小是一个 big-endian 字节顺序的 byte 数组:最高有效字节在第零个元素中。
10 //        允许零长度数量数组,这会导致 BigInteger 的值为 0,无论其正负号是 -1、0 还是 1。
11 //        参数:
12 //        signum - 该数的正负号(-1 表示负,0 表示零,1 表示正)。
13 //        magnitude - 该数的大小的 big-endian 二进制表示形式。
14         System.out.println(bigInteger);
15     }
16 }

BigInteger(int bitLength, int certainty, Random rnd)
    构造一个随机生成的正 BigInteger,它可能是一个具有指定 bitLength 的素数。
BigInteger(int numBits, Random rnd)
    构造一个随机生成的 BigInteger,它是在 0 到 (2^numBits - 1)(包括)范围内均匀分布的值。

 1 import java.math.BigInteger;
 2 import java.util.Random;
 3 
 4 public class Main {
 5     public static void main(String[] args) {
 6         Random r = new Random() ;
 7         // 随机素数
 8         BigInteger bigInteger = new BigInteger(5,20,r);
 9         //certainty 代表是素数的概率,越大是素数的概率越小  1-1/2^certainty
10         //bitLength 代表bit长度
11         //比如本例输出为23,二进制表示为11101
12         //5位最大表示为25,所以最大为25
13         System.out.println(bigInteger);
14         // 随机数
15         BigInteger bigInteger1 = new BigInteger(10,r);
16         // 0 到 (2^numBits - 1) 范围的随机数
17         System.out.println(bigInteger1);
18     }
19 }

BigInteger(String val)
    将 BigInteger 的十进制字符串表示形式转换为 BigInteger。
BigInteger(String val, int radix)
    将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger。

 1 import java.math.BigInteger;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         BigInteger bigInteger = new BigInteger("123456789") ;
 6         System.out.println(bigInteger);
 7         BigInteger bigInteger1 = new BigInteger("111110",2) ;
 8         // 将基数为2的二进制数(111110)转换为BigInteger的10进制类型
 9         System.out.println(bigInteger1);
10     }
11 }

 

BigIntegerd的方法摘要:

BigInteger abs()
  返回其值是此 BigInteger 的绝对值的 BigInteger。

 1 import java.math.BigInteger;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         BigInteger bigInteger = new BigInteger("-123456789") ;
 6         System.out.println(bigInteger);
 7         bigInteger = bigInteger.abs();
 8         System.out.println(bigInteger);
 9     }
10 }
11 /*
12 -123456789
13 123456789
14 Process finished with exit code 0
15 */

BigInteger add(BigInteger val)
  返回其值为 (this + val) 的 BigInteger。

 1 import java.math.BigInteger;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         BigInteger bigInteger = new BigInteger("123456789") ;
 6         bigInteger = bigInteger.add(new BigInteger("12312312312"));
 7         System.out.println(bigInteger);
 8     }
 9 }
10 /*
11 12435769101
12 
13 Process finished with exit code 0
14 */

BigInteger and(BigInteger val)
  返回其值为 (this & val) 的 BigInteger。

BigInteger andNot(BigInteger val)
  返回其值为 (this & ~val) 的 BigInteger。
int bitCount()
  返回此 BigInteger 的二进制补码表示形式中与符号不同的位的数量。
int bitLength()
  返回此 BigInteger 的最小的二进制补码表示形式的位数,不包括 符号位。
BigInteger clearBit(int n)
  返回其值与清除了指定位的此 BigInteger 等效的 BigInteger。
int compareTo(BigInteger val)
  将此 BigInteger 与指定的 BigInteger 进行比较。
BigInteger divide(BigInteger val)
  返回其值为 (this / val) 的 BigInteger。
BigInteger[] divideAndRemainder(BigInteger val)
  返回包含 (this / val) 后跟 (this % val) 的两个 BigInteger 的数组。
double doubleValue()
  将此 BigInteger 转换为 double。
boolean equals(Object x)
  比较此 BigInteger 与指定的 Object 的相等性。
BigInteger flipBit(int n)
  返回其值与对此 BigInteger 进行指定位翻转后的值等效的 BigInteger。
float floatValue()
  将此 BigInteger 转换为 float。
BigInteger gcd(BigInteger val)
  返回一个 BigInteger,其值是 abs(this) 和 abs(val) 的最大公约数。
int getLowestSetBit()
  返回此 BigInteger 最右端(最低位)1 比特的索引(即从此字节的右端开始到本字节中最右端 1 比特之间的 0 比特的位数)。
int hashCode()
  返回此 BigInteger 的哈希码。
int intValue()
  将此 BigInteger 转换为 int。
boolean isProbablePrime(int certainty)
  如果此 BigInteger 可能为素数,则返回 true,如果它一定为合数,则返回 false。
long longValue()
  将此 BigInteger 转换为 long。
BigInteger max(BigInteger val)
  返回此 BigInteger 和 val 的最大值。
BigInteger min(BigInteger val)
  返回此 BigInteger 和 val 的最小值。
BigInteger mod(BigInteger m)
  返回其值为 (this mod m) 的 BigInteger。
BigInteger modInverse(BigInteger m)
  返回其值为 (this-1 mod m) 的 BigInteger。
BigInteger modPow(BigInteger exponent, BigInteger m)
  返回其值为 (thisexponent mod m) 的 BigInteger。
BigInteger multiply(BigInteger val)
  返回其值为 (this * val) 的 BigInteger。
BigInteger negate()
  返回其值是 (-this) 的 BigInteger。
BigInteger nextProbablePrime()
  返回大于此 BigInteger 的可能为素数的第一个整数。
BigInteger not()
  返回其值为 (~this) 的 BigInteger。
BigInteger or(BigInteger val)
  返回其值为 (this | val) 的 BigInteger。
BigInteger pow(int exponent)
  返回其值为 (thisexponent) 的 BigInteger。
static BigInteger probablePrime(int bitLength, Random rnd)
  返回有可能是素数的、具有指定长度的正 BigInteger。
BigInteger remainder(BigInteger val)
  返回其值为 (this % val) 的 BigInteger。
BigInteger setBit(int n)
  返回其值与设置了指定位的此 BigInteger 等效的 BigInteger。
BigInteger shiftLeft(int n)
  返回其值为 (this << n) 的 BigInteger。
BigInteger shiftRight(int n)
  返回其值为 (this >> n) 的 BigInteger。
int signum()
  返回此 BigInteger 的正负号函数。
BigInteger subtract(BigInteger val)
  返回其值为 (this - val) 的 BigInteger。
boolean testBit(int n)
  当且仅当设置了指定的位时,返回 true。
byte[] toByteArray()
  返回一个 byte 数组,该数组包含此 BigInteger 的二进制补码表示形式。
String toString()
  返回此 BigInteger 的十进制字符串表示形式。
String toString(int radix)
  返回此 BigInteger 的给定基数的字符串表示形式。
static BigInteger valueOf(long val)
  返回其值等于指定 long 的值的 BigInteger。
BigInteger xor(BigInteger val)
  返回其值为 (this ^ val) 的 BigInteger。

 

 

目录
相关文章
|
分布式计算 大数据 分布式数据库
大数据Spark DStream
大数据Spark DStream
208 1
Burpsuite系列 -- Repeater和Decoder
Burpsuite系列 -- Repeater和Decoder
336 0
|
人工智能 自然语言处理 搜索推荐
【云栖实录】大模型驱动,开源融合的AI搜索产品发布
本文介绍了2024云栖大会上,阿里云发布的年度AI搜索产品详情。
643 8
|
11月前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
256 4
|
JavaScript 前端开发 NoSQL
无界 SaaS 数字生态工具:去平台中心化助力企业数字化转型
无界 SaaS 数字生态工具通过去平台中心化助力企业数字化转型,涵盖技术实现、商业逻辑、数据架构、用户界面设计等多方面。本文提供了一个简化的框架和示例代码,包括前端(React.js)和后端(Node.js + Express)的实现,帮助企业和开发者快速启动项目。示例代码涵盖了用户注册、登录和产品列表的获取功能,并提供了安全性、用户认证、数据确权等方面的注意事项。
|
存储 数据库 数据安全/隐私保护
基于SpringBoot+Vue人口老龄化社区服务与管理平台(源码+部署说明+演示视频+源码介绍)(3)
基于SpringBoot+Vue人口老龄化社区服务与管理平台(源码+部署说明+演示视频+源码介绍)
212 0
|
消息中间件 监控 安全
RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践(3)
RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践
282 0
RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践(3)
|
IDE Java 应用服务中间件
spring5与jdk 版本要求
spring5与jdk 版本要求
|
缓存 Ubuntu 关系型数据库
在 Ubuntu 中如何完全卸载 MySQL 服务器?
在 Ubuntu 中如何完全卸载 MySQL 服务器?
821 1
|
关系型数据库 MySQL 数据库
mysql分表详解
mysql分表详解
419 0
mysql分表详解