public class BigInteger extends Number implements Comparable<BigInteger>
算术运算的语义完全模仿Java的整数运算符,如Java语言规范中定义的那样 。 例如,除以零,抛出一个ArithmeticException
,而一个负数除以正数则产生负数(或零)余数。 Spec中关于溢出的所有细节都将被忽略,因为BigInteger是必要的,以适应操作的结果。
移位操作的语义扩展了Java的移位运算符,以允许负移位距离。 具有负移位距离的右移导致左移,反之亦然。 未签名的右移位运算符( >>>
)被省略,因为该操作与由该类提供的“无限字大小”抽象结合无关。
按位逻辑运算的语义完全模仿Java的按位整数运算符。 二进制运算符( and
, or
, xor
)隐式地对两个操作数的较短执行操作之前执行符号扩展。
比较操作执行带符号的整数比较,类似于Java关系和等式运算符执行的整数比较。
提供模块化算术运算以计算残差,执行取幂和计算乘法反转。 这些方法总是返回一个非负的结果,在0
和(modulus - 1)
之间。
位操作对其操作数的二进制补码表示的一位进行操作。 如有必要,操作数将被扩展,以便它包含指定的位。 没有一个单位操作可以产生一个BigInteger,它与正在操作的BigInteger具有不同的符号,因为它们只影响一个位,并且此类提供的“无限大小”抽象确保了无限多的“虚拟每个BigInteger之前的符号位“。
为了简洁起见,在整个BigInteger方法的描述中都使用伪代码。 伪代码表达式(i + j)
是“BigInteger的缩写”,它的值是BigInteger i
加上BigInteger j
。 如果且仅当BigInteger i
代表与i
j相同的值时,伪代码表达式(i == j)
是“ true
”的j
。 类似地解释其他伪代码表达式。
此类中的所有方法和构造NullPointerException
在传递任何输入参数的空对象引用时抛出NullPointerException。 BigInteger必须支持范围-2 Integer.MAX_VALUE
(排他)到+2 Integer.MAX_VALUE
(排他)的值,并且可以支持该范围之外的值。 素可能值的范围是有限的,并且可以是小于的充分支持的正范围BigInteger
。 范围必须至少为1到2.5亿 。
ArithmeticException
当结果超出-2
Integer.MAX_VALUE
(排他)到+2
Integer.MAX_VALUE
(排他)的支持范围。
BigDecimal
, Serialized Form
Modifier and Type | Field and Description |
---|---|
static BigInteger |
ONE
BigInteger常数。
|
static BigInteger |
TEN
BigInteger常数十。
|
static BigInteger |
ZERO
BigInteger常数为零。
|
Constructor and Description |
---|
BigInteger(byte[] val)
将包含BigInteger的二进制补码二进制表达式的字节数组转换为BigInteger。
|
BigInteger(int signum, byte[] magnitude)
将BigInteger的符号大小表示形式转换为BigInteger。
|
BigInteger(int bitLength, int certainty, Random rnd)
构造一个随机生成的正BigInteger,它可能是素数,具有指定的bitLength。
|
BigInteger(int numBits, Random rnd)
构造一个随机生成的BigInteger,均匀分布在0到(2
numBits - 1)的范围内。
|
BigInteger(String val)
将BigInteger的十进制字符串表示形式转换为BigInteger。
|
BigInteger(String val, int radix)
将指定基数中的BigInteger的String表示形式转换为BigInteger。
|
Modifier and Type | Method and Description |
---|---|
BigInteger |
abs()
返回一个BigInteger,它的值是此BigInteger的绝对值。
|
BigInteger |
add(BigInteger val)
返回值为
(this + val) 。
|
BigInteger |
and(BigInteger val)
返回值为
(this & val) 。
|
BigInteger |
andNot(BigInteger val)
返回值为
(this & ~val) 。
|
int |
bitCount()
返回与其符号位不同的BigInteger的二进制补码表示中的位数。
|
int |
bitLength()
返回此BigInteger的最小二进制补码表示中的位数,
不包括符号位。
|
byte |
byteValueExact()
将此
BigInteger 转换为
byte ,检查丢失的信息。
|
BigInteger |
clearBit(int n)
返回一个BigInteger,其值等于此BigInteger,指定的位被清零。
|
int |
compareTo(BigInteger val)
将此BigInteger与指定的BigInteger进行比较。
|
BigInteger |
divide(BigInteger val)
返回值为
(this / val) 。
|
BigInteger[] |
divideAndRemainder(BigInteger val)
返回两个BigInteger的数组,其中包含
(this / val) 后跟
(this % val) 。
|
double |
doubleValue()
将此BigInteger转换为
double 。
|
boolean |
equals(Object x)
将此BigInteger与指定的对象进行比较以实现相等。
|
BigInteger |
flipBit(int n)
返回一个BigInteger,其值等于此BigInteger,指定的位被翻转。
|
float |
floatValue()
将此BigInteger转换为
float 。
|
BigInteger |
gcd(BigInteger val)
返回一个BigInteger,其值是
abs(this) 和
abs(val) 。
|
int |
getLowestSetBit()
返回此BigInteger中最右(最低位)一位的索引(最右边一位右侧的零位数)。
|
int |
hashCode()
返回此BigInteger的哈希码。
|
int |
intValue()
将此BigInteger转换为
int 。
|
int |
intValueExact()
将此
BigInteger 转换为
int ,检查丢失的信息。
|
boolean |
isProbablePrime(int certainty)
返回
true 如果这个BigInteger可能是素数,
false 如果它是绝对复合。
|
long |
longValue()
将此BigInteger转换为
long 。
|
long |
longValueExact()
将此
BigInteger 转换为
long ,检查丢失的信息。
|
BigInteger |
max(BigInteger val)
返回此BigInteger和
val 。
|
BigInteger |
min(BigInteger val)
返回此BigInteger和
val 。
|
BigInteger |
mod(BigInteger m)
返回值为
(this mod m )。
|
BigInteger |
modInverse(BigInteger m)
返回值为
(this
-1
mod m) 。
|
BigInteger |
modPow(BigInteger exponent, BigInteger m)
返回值为
(thisexponent mod m)的BigInteger 。
|
BigInteger |
multiply(BigInteger val)
返回值为
(this * val) 。
|
BigInteger |
negate()
返回值为
(-this) 。
|
BigInteger |
nextProbablePrime()
返回大于这个
BigInteger 为
BigInteger 的第一个整数。
|
BigInteger |
not()
返回值为
(~this) 。
|
BigInteger |
or(BigInteger val)
返回值为
(this | val) 。
|
BigInteger |
pow(int exponent)
返回值为
(thisexponent)的BigInteger 。
|
static BigInteger |
probablePrime(int bitLength, Random rnd)
返回一个正的BigInteger,它可能是素数,具有指定的位长度。
|
BigInteger |
remainder(BigInteger val)
返回值为
(this % val) 。
|
BigInteger |
setBit(int n)
返回一个BigInteger,其值等于具有指定位集合的BigInteger。
|
BigInteger |
shiftLeft(int n)
返回值为
(this << n) 。
|
BigInteger |
shiftRight(int n)
返回值为
(this >> n) 。
|
short |
shortValueExact()
将此
BigInteger 转换为
short ,检查丢失的信息。
|
int |
signum()
返回此BigInteger的signum函数。
|
BigInteger |
subtract(BigInteger val)
返回值为
(this - val) 。
|
boolean |
testBit(int n)
返回
true 当且仅当指定的位被设置。
|
byte[] |
toByteArray()
返回一个包含此BigInteger的二进制补码表示的字节数组。
|
String |
toString()
返回此BigInteger的十进制字符串表示形式。
|
String |
toString(int radix)
返回给定基数中BigInteger的String表示形式。
|
static BigInteger |
valueOf(long val)
返回一个BigInteger,其值等于指定的
long 。
|
BigInteger |
xor(BigInteger val)
返回值为
(this ^ val) 。
|
byteValue, shortValue
public static final BigInteger ZERO
public static final BigInteger ONE
public static final BigInteger TEN
public BigInteger(byte[] val)
val
-
val
big-endian二进制二进制表示法。
NumberFormatException
-
val
为零字节长。
public BigInteger(int signum, byte[] magnitude)
signum
- 数字的符号(-1为负,0为零,1为正)。
magnitude
- 大端二进制表示的数量的大小。
NumberFormatException
-
signum
不是三个合法值(-1,0和1)中的一个,或者
signum
是
magnitude
包含一个或多个非零字节。
public BigInteger(String val, int radix)
Character.digit
提供。
字符串可能不包含任何无关的字符(例如,空格)。
val
- BigInteger的字符串表示形式。
radix
- 用于解释的基数
val
。
NumberFormatException
-
val
不是指定基数中BigInteger的有效表示,或
radix
不在
Character.MIN_RADIX
至
Character.MAX_RADIX
之间。
Character.digit(char, int)
public BigInteger(String val)
Character.digit
提供。
字符串可能不包含任何无关的字符(例如,空格)。
val
- 十进制BigInteger的字符串表示形式。
NumberFormatException
-
val
不是BigInteger的有效表示。
Character.digit(char, int)
public BigInteger(int numBits, Random rnd)
numBits
- 1)的范围内。
分布的均匀性假设在rnd
中提供了公平的随机比特rnd
。
注意,这个构造函数总是构造一个非负的BigInteger。
numBits
- 新BigInteger的最大位长度。
rnd
- 用于计算新BigInteger的随机源。
IllegalArgumentException
-
numBits
为负数。
bitLength()
public BigInteger(int bitLength, int certainty, Random rnd)
建议使用probablePrime
方法优先于此构造函数,除非有必要指定确定性。
bitLength
- 返回的BigInteger的bitLength。
certainty
- 衡量呼叫者愿意忍受的不确定性。
新BigInteger代表素数的概率将超过(1 - 1/2 certainty
)。
该构造函数的执行时间与该参数的值成比例。
rnd
- 用于选择要测试原始候选者的随机比特来源。
ArithmeticException
-
bitLength < 2
或
bitLength
太大。
bitLength()
public static BigInteger probablePrime(int bitLength, Random rnd)
bitLength
- 返回的BigInteger的bitLength。
rnd
- 用于选择要测试原始候选者的随机比特来源。
bitLength
位的
bitLength
可能是首要的
ArithmeticException
-
bitLength < 2
或
bitLength
太大。
bitLength()
public BigInteger nextProbablePrime()
BigInteger
的第一个整数,这可能是素数。
此方法返回的数字的复合概率不超过2 -100 。
该方法在搜索时不会跳过素数:如果返回p
,则没有素数q
,使得this < q < p
。
BigInteger
的第一个整数大概是素数。
ArithmeticException
-
this < 0
或
this
太大。
public static BigInteger valueOf(long val)
long
。
这种“静态工厂方法”优先于( long
)构造函数,因为它允许重用常用的BigInteger。
val
- 返回
val
值。
public BigInteger add(BigInteger val)
(this + val)
。
val
- 要添加到此BigInteger的值。
this + val
public BigInteger subtract(BigInteger val)
(this - val)
。
val
- 要从此BigInteger中减去的值。
this - val
public BigInteger multiply(BigInteger val)
(this * val)
。
val
- 要乘以此BigInteger的值。
this * val
public BigInteger divide(BigInteger val)
(this / val)
。
val
- 这个BigInteger将被划分的值。
this / val
ArithmeticException
- 如果
val
为零。
public BigInteger[] divideAndRemainder(BigInteger val)
(this / val)
后跟
(this % val)
。
val
- 这个BigInteger要被划分的值,其余的是计算的。
(this / val)
是初始元素,余数
(this % val)
是最后一个元素。
ArithmeticException
- 如果
val
为零。
public BigInteger remainder(BigInteger val)
(this % val)
。
val
- 这个BigInteger要被划分的值,其余的是计算的。
this % val
ArithmeticException
- 如果
val
为零。
public BigInteger pow(int exponent)
exponent
是整数而不是BigInteger。
exponent
- 这个BigInteger将被提升的指数。
ArithmeticException
- exponent
是否定的。
(这将导致操作产生一个非整数值。)
public BigInteger gcd(BigInteger val)
abs(this)
和abs(val)
。
如果this == 0 && val == 0
返回0。
val
- 要计算GCD的值。
GCD(abs(this), abs(val))
public BigInteger abs()
abs(this)
public BigInteger negate()
(-this)
。
-this
public int signum()
public BigInteger mod(BigInteger m)
(this mod m
)。
该方法与remainder
的不同之处在于它总是返回一个非负的 BigInteger。
m
- 模数。
this mod m
ArithmeticException
-
m
remainder(java.math.BigInteger)
public BigInteger modPow(BigInteger exponent, BigInteger m)
pow
不同,此方法允许负指数。)
exponent
- 指数。
m
- 模数。
ArithmeticException
-
m
0或指数为负数,而该BigInteger不是
m的
m
。
modInverse(java.math.BigInteger)
public BigInteger modInverse(BigInteger m)
(this
-1
mod m)
。
m
- 模数。
this
-1
mod m
。
ArithmeticException
-
m
,或这个BigInteger没有乘法逆模态(即,这个BigInteger不是m的
相对素数 )。
public BigInteger shiftLeft(int n)
(this << n)
。
移位距离n
可能为负,在这种情况下,该方法执行右移。
(计算floor(this * 2n) )
n
- 移位距离,以位为单位。
this << n
shiftRight(int)
public BigInteger shiftRight(int n)
(this >> n)
。
执行符号扩展。
移动距离n
可以是负的,在这种情况下,该方法执行左移。
(计算floor(this / 2n) )
n
- 移位距离,以位为单位。
this >> n
shiftLeft(int)
public BigInteger and(BigInteger val)
(this & val)
。
(这个方法返回一个负的BigInteger,当且仅当这个和val都是负的。)
val
- 值与此BigInteger进行AND运算。
this & val
public BigInteger or(BigInteger val)
(this | val)
。
(当且仅当这个或val是负数时,此方法返回一个负的BigInteger。)
val
- 要与此BigInteger进行OR
val
值。
this | val
public BigInteger xor(BigInteger val)
(this ^ val)
。
(当且仅当这个和val中的一个为负时,该方法返回一个负的BigInteger。)
val
- 值将与此BigInteger异或。
this ^ val
public BigInteger not()
(~this)
。
(当且仅当BigInteger为非负值时,此方法返回负值。)
~this
public BigInteger andNot(BigInteger val)
(this & ~val)
。
该方法中,这相当于and(val.not())
,被提供作为用于掩蔽操作的便利性。
(当且仅当this
为负数, val
为正数时,此方法返回负BigInteger。)
val
- 这个BigInteger的补充和
val
值。
this & ~val
public boolean testBit(int n)
true
当且仅当指定位被置位时。
(计算((this & (1<<n)) != 0)
)
n
- 要测试的位的索引。
true
当且仅当指定的位被置位时。
ArithmeticException
-
n
是否定的。
public BigInteger setBit(int n)
(this | (1<<n))
)
n
- 要设置的位的索引。
this | (1<<n)
ArithmeticException
-
n
为负数。
public BigInteger clearBit(int n)
(this & ~(1<<n))
)
n
- 要清除的位的索引。
this & ~(1<<n)
ArithmeticException
-
n
为负数。
public BigInteger flipBit(int n)
(this ^ (1<<n))
)
n
- 要翻转的位的索引。
this ^ (1<<n)
ArithmeticException
-
n
为负数。
public int getLowestSetBit()
(this == 0? -1 : log2(this & -this))
)
public int bitLength()
(ceil(log2(this < 0 ? -this : this+1)))
)
public int bitCount()
public boolean isProbablePrime(int certainty)
true
如果这个BigInteger可能是素数, false
如果它是绝对复合。
如果certainty
为0,返回true
。
certainty
-在不确定性的度量,来电者是愿意忍受:如果返回true
即此BigInteger是素数超过(1 - 1/2的概率certainty
)。
该方法的执行时间与该参数的值成正比。
true
如果这个BigInteger可能是素数,
false
如果它是绝对复合的。
public int compareTo(BigInteger val)
(x.compareTo(y)
< op > 0)
,其中< op >是六个比较运算符之一。
compareTo
在接口
Comparable<BigInteger>
val
- BigInteger要比较这个BigInteger。
val
。
public boolean equals(Object x)
equals
在
Object
x
- 要比较
x
对象。
true
当且仅当指定的Object是BigInteger,其值在数字上等于此BigInteger。
Object.hashCode()
, HashMap
public BigInteger min(BigInteger val)
val
。
val
- 要计算最小值的值。
val
。
如果他们相等,可以退还。
public BigInteger max(BigInteger val)
val
。
val
- 要计算最大值的值。
val
。
如果他们相等,可以退还。
public int hashCode()
hashCode
在
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public String toString(int radix)
Character.MIN_RADIX
到Character.MAX_RADIX
之间,则默认为10(如Integer.toString
)。
使用由Character.forDigit
提供的数字到字符的映射,如果合适,则添加减号。
(此表示与(String, int)
构造函数兼容。)
radix
- 字符串表示的基数。
Integer.toString(int, int)
,
Character.forDigit(int, int)
,
BigInteger(java.lang.String, int)
public String toString()
Character.forDigit
被使用,并且如果合适的话减号被前置。
(此表示与(String)
构造函数兼容,并允许使用Java +运算符进行字符串连接。)
toString
在类
Object
Character.forDigit(int, int)
,
BigInteger(java.lang.String)
public byte[] toByteArray()
(ceil((this.bitLength() + 1)/8))
。
(此表示与(byte[])
构造函数兼容。)
BigInteger(byte[])
public int intValue()
int
。
这种转换类似于The Java™ Language Specification第5.1.3节定义的从long
到int
的缩小原语转换 :如果这个BigInteger太大而不适合于int
,则只返回低位32位。
请注意,此转换可能会丢失有关BigInteger值的总体大小的信息,并返回具有相反符号的结果。
intValue
在
Number
int
。
intValueExact()
public long longValue()
long
。
这种转换类似于The Java™ Language Specification第5.1.3节定义的从long
到int
的缩小原语转换 :如果这个BigInteger太大而不适合于long
,则只返回低位64位。
请注意,此转换可能会丢失有关BigInteger值的总体大小的信息,并返回具有相反符号的结果。
longValue
在
Number
long
。
longValueExact()
public float floatValue()
float
。
这种转换是类似于从基本收缩转换 double
至float
如在章节的The Java™ Language Specification 5.1.3定义:如果此BigInteger有太大的幅度来表示作为float
,它会被转换为Float.NEGATIVE_INFINITY
或Float.POSITIVE_INFINITY
适当。
请注意,即使返回值是有限的,此转换也可能丢失有关BigInteger值精度的信息。
floatValue
在
Number
float
。
public double doubleValue()
double
。
这种转换是类似于从基本收缩转换 double
至float
如在章节的The Java™ Language Specification 5.1.3定义:如果此BigInteger有太大的幅度来表示作为double
,它会被转换为Double.NEGATIVE_INFINITY
或Double.POSITIVE_INFINITY
适当。
请注意,即使返回值是有限的,此转换也可能丢失有关BigInteger值精度的信息。
doubleValue
在
Number
double
。
public long longValueExact()
BigInteger
转换为long
,检查丢失的信息。
如果此BigInteger
的值超出了long
类型的范围,则抛出ArithmeticException
。
BigInteger
转换成
long
。
ArithmeticException
-如果值
this
将不完全适合在
long
。
longValue()
public int intValueExact()
BigInteger
转换为int
,检查丢失的信息。
如果这个BigInteger
的值超出了int
类型的范围,那么会抛出一个ArithmeticException
。
BigInteger
转换成
int
。
ArithmeticException
-如果值
this
将不完全适合在
int
。
intValue()
public short shortValueExact()
BigInteger
转换为short
,检查丢失的信息。
如果此BigInteger
的值超出了short
类型的范围,则抛出ArithmeticException
。
BigInteger
转换成
short
。
ArithmeticException
-如果值
this
将不完全适合在
short
。
Number.shortValue()
public byte byteValueExact()
BigInteger
转换为byte
,检查丢失的信息。
如果此BigInteger
的值超出了byte
类型的范围,则抛出ArithmeticException
。
BigInteger
转换成
byte
。
ArithmeticException
-如果值
this
将不完全适合在
byte
。
Number.byteValue()