public class BigInteger extends Number implements Comparable<BigInteger>, Serializable
BitSet
for highperformance bitwise operations on
arbitrarilylarge sequences of bits.Modifier and Type  Field and Description 

static BigInteger 
ONE
The
BigInteger constant 1. 
static BigInteger 
TEN
The
BigInteger constant 10. 
static BigInteger 
ZERO
The
BigInteger constant 0. 
Constructor and Description 

BigInteger(byte[] value)
Constructs a new
BigInteger from the given two's complement
representation. 
BigInteger(int signum,
byte[] magnitude)
Constructs a new
BigInteger instance with the given sign and
magnitude. 
BigInteger(int bitLength,
int certainty,
Random unused)
Constructs a random
BigInteger instance in the range [0,
pow(2, bitLength)1] which is probably prime. 
BigInteger(int numBits,
Random random)
Constructs a random nonnegative
BigInteger instance in the range
[0, pow(2, numBits)1] . 
BigInteger(String value)
Constructs a new
BigInteger by parsing value . 
BigInteger(String value,
int radix)
Constructs a new
BigInteger instance by parsing value . 
Modifier and Type  Method and Description 

BigInteger 
abs()
Returns a
BigInteger whose value is the absolute value of this . 
BigInteger 
add(BigInteger value)
Returns a
BigInteger whose value is this + value . 
BigInteger 
and(BigInteger value)
Returns a
BigInteger whose value is this & value . 
BigInteger 
andNot(BigInteger value)
Returns a
BigInteger whose value is this & ~value . 
int 
bitCount()
Returns the number of bits in the two's complement representation of
this which differ from the sign bit. 
int 
bitLength()
Returns the length of the value's two's complement representation without
leading zeros for positive numbers / without leading ones for negative
values.

BigInteger 
clearBit(int n)
Returns a
BigInteger which has the same binary representation
as this but with the bit at position n cleared. 
int 
compareTo(BigInteger value)
Compares this
BigInteger with value . 
BigInteger 
divide(BigInteger divisor)
Returns a
BigInteger whose value is this / divisor . 
BigInteger[] 
divideAndRemainder(BigInteger divisor)
Returns a two element
BigInteger array containing
this / divisor at index 0 and this % divisor at index 1. 
double 
doubleValue()
Returns this
BigInteger as a double. 
boolean 
equals(Object x)
Compares this instance with the specified object and indicates if they
are equal.

BigInteger 
flipBit(int n)
Returns a
BigInteger which has the same binary representation
as this but with the bit at position n flipped. 
float 
floatValue()
Returns this
BigInteger as a float. 
BigInteger 
gcd(BigInteger value)
Returns a
BigInteger whose value is greatest common divisor
of this and value . 
int 
getLowestSetBit()
Returns the position of the lowest set bit in the two's complement
representation of this
BigInteger . 
int 
hashCode()
Returns an integer hash code for this object.

int 
intValue()
Returns this
BigInteger as an int value. 
boolean 
isProbablePrime(int certainty)
Tests whether this
BigInteger is probably prime. 
long 
longValue()
Returns this
BigInteger as a long value. 
BigInteger 
max(BigInteger value)
Returns the maximum of this
BigInteger and value . 
BigInteger 
min(BigInteger value)
Returns the minimum of this
BigInteger and value . 
BigInteger 
mod(BigInteger m)
Returns a
BigInteger whose value is this mod m . 
BigInteger 
modInverse(BigInteger m)
Returns a
BigInteger whose value is 1/this mod m . 
BigInteger 
modPow(BigInteger exponent,
BigInteger m)
Returns a
BigInteger whose value is pow(this, exponent) mod m . 
BigInteger 
multiply(BigInteger value)
Returns a
BigInteger whose value is this * value . 
BigInteger 
negate()
Returns a
BigInteger whose value is the this . 
BigInteger 
nextProbablePrime()
Returns the smallest integer x >
this which is probably prime as
a BigInteger instance. 
BigInteger 
not()
Returns a
BigInteger whose value is ~this . 
BigInteger 
or(BigInteger value)
Returns a
BigInteger whose value is this  value . 
BigInteger 
pow(int exp)
Returns a
BigInteger whose value is pow(this, exp) . 
static BigInteger 
probablePrime(int bitLength,
Random unused)
Returns a random positive
BigInteger instance in the range [0, pow(2, bitLength)1] which is probably prime. 
BigInteger 
remainder(BigInteger divisor)
Returns a
BigInteger whose value is this % divisor . 
BigInteger 
setBit(int n)
Returns a
BigInteger which has the same binary representation
as this but with the bit at position n set. 
BigInteger 
shiftLeft(int n)
Returns a
BigInteger whose value is this << n . 
BigInteger 
shiftRight(int n)
Returns a
BigInteger whose value is this >> n . 
int 
signum()
Returns the sign of this
BigInteger . 
BigInteger 
subtract(BigInteger value)
Returns a
BigInteger whose value is this  value . 
boolean 
testBit(int n)
Tests whether the bit at position n in
this is set. 
byte[] 
toByteArray()
Returns the two's complement representation of this
BigInteger in
a byte array. 
String 
toString()
Returns a string representation of this
BigInteger in decimal
form. 
String 
toString(int radix)
Returns a string containing a string representation of this
BigInteger with base radix. 
static BigInteger 
valueOf(long value)
Returns a
BigInteger whose value is equal to value . 
BigInteger 
xor(BigInteger value)
Returns a
BigInteger whose value is this ^ value . 
byteValue, shortValue
public static final BigInteger ZERO
BigInteger
constant 0.public static final BigInteger ONE
BigInteger
constant 1.public static final BigInteger TEN
BigInteger
constant 10.public BigInteger(int numBits, Random random)
BigInteger
instance in the range
[0, pow(2, numBits)1]
.numBits
 maximum length of the new BigInteger
in bits.random
 is the random number generator to be used.IllegalArgumentException
 if numBits
< 0.public BigInteger(int bitLength, int certainty, Random unused)
BigInteger
instance in the range [0,
pow(2, bitLength)1]
which is probably prime. The probability that the
returned BigInteger
is prime is beyond
1  1/pow(2, certainty)
.
Implementation Note: the Random
argument is ignored.
This implementation uses OpenSSL's bn_rand
as a source of
cryptographically strong pseudorandom numbers.
bitLength
 length of the new BigInteger
in bits.certainty
 tolerated primality uncertainty.ArithmeticException
 if bitLength < 2
.public BigInteger(String value)
BigInteger
by parsing value
. The string
representation consists of an optional plus or minus sign followed by a
nonempty sequence of decimal digits. Digits are interpreted as if by
Character.digit(char,10)
.value
 string representation of the new BigInteger
.NullPointerException
 if value == null
.NumberFormatException
 if value
is not a valid
representation of a BigInteger
.public BigInteger(String value, int radix)
BigInteger
instance by parsing value
.
The string representation consists of an optional plus or minus sign
followed by a nonempty sequence of digits in the specified radix. Digits
are interpreted as if by Character.digit(char, radix)
.value
 string representation of the new BigInteger
.radix
 the base to be used for the conversion.NullPointerException
 if value == null
.NumberFormatException
 if value
is not a valid
representation of a BigInteger
or if radix <
Character.MIN_RADIX
or radix > Character.MAX_RADIX
.public BigInteger(int signum, byte[] magnitude)
BigInteger
instance with the given sign and
magnitude.signum
 sign of the new BigInteger
(1 for negative, 0 for
zero, 1 for positive).magnitude
 magnitude of the new BigInteger
with the most
significant byte first.NullPointerException
 if magnitude == null
.NumberFormatException
 if the sign is not one of 1, 0, 1 or if
the sign is zero and the magnitude contains nonzero entries.public BigInteger(byte[] value)
BigInteger
from the given two's complement
representation. The most significant byte is the entry at index 0. The
most significant bit of this entry determines the sign of the new BigInteger
instance. The array must be nonempty.value
 two's complement representation of the new BigInteger
.NullPointerException
 if value == null
.NumberFormatException
 if the length of value
is zero.public static BigInteger valueOf(long value)
BigInteger
whose value is equal to value
.public byte[] toByteArray()
BigInteger
in
a byte array.public BigInteger abs()
BigInteger
whose value is the absolute value of this
.public BigInteger negate()
BigInteger
whose value is the this
.public BigInteger add(BigInteger value)
BigInteger
whose value is this + value
.public BigInteger subtract(BigInteger value)
BigInteger
whose value is this  value
.public int signum()
BigInteger
.1
if this < 0
, 0
if this == 0
,
1
if this > 0
.public BigInteger shiftRight(int n)
BigInteger
whose value is this >> n
. For
negative arguments, the result is also negative. The shift distance may
be negative which means that this
is shifted left.
Implementation Note: Usage of this method on negative values is not recommended as the current implementation is not efficient.
n
 shift distancethis >> n
if n >= 0
; this << (n)
otherwisepublic BigInteger shiftLeft(int n)
BigInteger
whose value is this << n
. The
result is equivalent to this * pow(2, n)
if n >= 0. The shift
distance may be negative which means that this
is shifted right.
The result then corresponds to floor(this / pow(2, n))
.
Implementation Note: Usage of this method on negative values is not recommended as the current implementation is not efficient.
n
 shift distance.this << n
if n >= 0
; this >> (n)
.
otherwisepublic int bitLength()
The two's complement representation of this
will be at least
bitLength() + 1
bits long.
The value will fit into an int
if bitLength() < 32
or
into a long
if bitLength() < 64
.
this
without the sign bit.public boolean testBit(int n)
this
is set. The result is
equivalent to this & pow(2, n) != 0
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
n
 position where the bit in this
has to be inspected.ArithmeticException
 if n < 0
.public BigInteger setBit(int n)
BigInteger
which has the same binary representation
as this
but with the bit at position n set. The result is
equivalent to this  pow(2, n)
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
n
 position where the bit in this
has to be set.ArithmeticException
 if n < 0
.public BigInteger clearBit(int n)
BigInteger
which has the same binary representation
as this
but with the bit at position n cleared. The result is
equivalent to this & ~pow(2, n)
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
n
 position where the bit in this
has to be cleared.ArithmeticException
 if n < 0
.public BigInteger flipBit(int n)
BigInteger
which has the same binary representation
as this
but with the bit at position n flipped. The result is
equivalent to this ^ pow(2, n)
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
n
 position where the bit in this
has to be flipped.ArithmeticException
 if n < 0
.public int getLowestSetBit()
BigInteger
. If all bits are zero (this==0)
then 1 is returned as result.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
public int bitCount()
this
which differ from the sign bit. If this
is negative,
the result is equivalent to the number of bits set in the two's
complement representation of this  1
.
Use bitLength(0)
to find the length of the binary value in
bits.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
public BigInteger not()
BigInteger
whose value is ~this
. The result
of this operation is this1
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
public BigInteger and(BigInteger value)
BigInteger
whose value is this & value
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
value
 value to be and'ed with this
.NullPointerException
 if value == null
.public BigInteger or(BigInteger value)
BigInteger
whose value is this  value
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
value
 value to be or'ed with this
.NullPointerException
 if value == null
.public BigInteger xor(BigInteger value)
BigInteger
whose value is this ^ value
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
value
 value to be xor'ed with this
NullPointerException
 if value == null
public BigInteger andNot(BigInteger value)
BigInteger
whose value is this & ~value
.
Evaluating x.andNot(value)
returns the same result as x.and(value.not())
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
value
 value to be not'ed and then and'ed with this
.NullPointerException
 if value == null
.public int intValue()
BigInteger
as an int value. If this
is too
big to be represented as an int, then this % (1 << 32)
is
returned.public long longValue()
BigInteger
as a long value. If this
is too
big to be represented as a long, then this % pow(2, 64)
is
returned.public float floatValue()
BigInteger
as a float. If this
is too big to
be represented as a float, then Float.POSITIVE_INFINITY
or
Float.NEGATIVE_INFINITY
is returned. Note that not all integers
in the range [Float.MAX_VALUE, Float.MAX_VALUE]
can be exactly
represented as a float.floatValue
in class Number
public double doubleValue()
BigInteger
as a double. If this
is too big
to be represented as a double, then Double.POSITIVE_INFINITY
or
Double.NEGATIVE_INFINITY
is returned. Note that not all integers
in the range [Double.MAX_VALUE, Double.MAX_VALUE]
can be exactly
represented as a double.doubleValue
in class Number
public int compareTo(BigInteger value)
BigInteger
with value
. Returns 1
if this < value
, 0
if this == value
and 1
if this > value
, .compareTo
in interface Comparable<BigInteger>
value
 value to be compared with this
.another
;
a positive integer if this instance is greater than
another
; 0 if this instance has the same order as
another
.NullPointerException
 if value == null
.public BigInteger min(BigInteger value)
BigInteger
and value
.value
 value to be used to compute the minimum with this
.NullPointerException
 if value == null
.public BigInteger max(BigInteger value)
BigInteger
and value
.value
 value to be used to compute the maximum with this
NullPointerException
 if value == null
public int hashCode()
Object
Object.equals(java.lang.Object)
returns true
must return
the same hash code value. This means that subclasses of Object
usually override both methods or neither method.
Note that hash values must not change over time unless information used in equals comparisons also changes.
See Writing a correct
hashCode
method
if you intend implementing your own hashCode
method.
hashCode
in class Object
Object.equals(java.lang.Object)
public boolean equals(Object x)
Object
o
must represent the same object
as this instance using a classspecific comparison. The general contract
is that this comparison should be reflexive, symmetric, and transitive.
Also, no object reference other than null is equal to null.
The default implementation returns true
only if this ==
o
. See Writing a correct
equals
method
if you intend implementing your own equals
method.
The general contract for the equals
and Object.hashCode()
methods is that if equals
returns true
for
any two objects, then hashCode()
must return the same value for
these objects. This means that subclasses of Object
usually
override either both methods or neither of them.
equals
in class Object
x
 the object to compare this instance with.true
if the specified object is equal to this Object
; false
otherwise.Object.hashCode()
public String toString()
BigInteger
in decimal
form.public String toString(int radix)
BigInteger
with base radix. If radix < Character.MIN_RADIX
or
radix > Character.MAX_RADIX
then a decimal representation is
returned. The characters of the string representation are generated with
method Character.forDigit
.radix
 base to be used for the string representation.public BigInteger gcd(BigInteger value)
BigInteger
whose value is greatest common divisor
of this
and value
. If this == 0
and value == 0
then zero is returned, otherwise the result is positive.value
 value with which the greatest common divisor is computed.NullPointerException
 if value == null
.public BigInteger multiply(BigInteger value)
BigInteger
whose value is this * value
.NullPointerException
 if value == null
.public BigInteger pow(int exp)
BigInteger
whose value is pow(this, exp)
.ArithmeticException
 if exp < 0
.public BigInteger[] divideAndRemainder(BigInteger divisor)
BigInteger
array containing
this / divisor
at index 0 and this % divisor
at index 1.divisor
 value by which this
is divided.NullPointerException
 if divisor == null
.ArithmeticException
 if divisor == 0
.divide(java.math.BigInteger)
,
remainder(java.math.BigInteger)
public BigInteger divide(BigInteger divisor)
BigInteger
whose value is this / divisor
.divisor
 value by which this
is divided.this / divisor
.NullPointerException
 if divisor == null
.ArithmeticException
 if divisor == 0
.public BigInteger remainder(BigInteger divisor)
BigInteger
whose value is this % divisor
.
Regarding signs this methods has the same behavior as the % operator on
ints: the sign of the remainder is the same as the sign of this.divisor
 value by which this
is divided.NullPointerException
 if divisor == null
.ArithmeticException
 if divisor == 0
.public BigInteger modInverse(BigInteger m)
BigInteger
whose value is 1/this mod m
. The
modulus m
must be positive. The result is guaranteed to be in the
interval [0, m)
(0 inclusive, m exclusive). If this
is
not relatively prime to m, then an exception is thrown.m
 the modulus.NullPointerException
 if m == null
ArithmeticException
 if m < 0 or
if this
is not
relatively prime to m
public BigInteger modPow(BigInteger exponent, BigInteger m)
BigInteger
whose value is pow(this, exponent) mod m
. The modulus m
must be positive. The
result is guaranteed to be in the interval [0, m)
(0 inclusive,
m exclusive). If the exponent is negative, then pow(this.modInverse(m), exponent) mod m
is computed. The inverse of
this only exists if this
is relatively prime to m, otherwise an
exception is thrown.exponent
 the exponent.m
 the modulus.NullPointerException
 if m == null
or exponent ==
null
.ArithmeticException
 if m < 0
or if exponent<0
and
this is not relatively prime to m
.public BigInteger mod(BigInteger m)
BigInteger
whose value is this mod m
. The
modulus m
must be positive. The result is guaranteed to be in the
interval [0, m)
(0 inclusive, m exclusive). The behavior of this
function is not equivalent to the behavior of the % operator defined for
the builtin int
's.m
 the modulus.this mod m
.NullPointerException
 if m == null
.ArithmeticException
 if m < 0
.public boolean isProbablePrime(int certainty)
BigInteger
is probably prime. If true
is returned, then this is prime with a probability beyond
1  1/pow(2, certainty)
. If false
is returned, then this
is definitely composite. If the argument certainty
<= 0, then
this method returns true.certainty
 tolerated primality uncertainty.true
, if this
is probably prime, false
otherwise.public BigInteger nextProbablePrime()
this
which is probably prime as
a BigInteger
instance. The probability that the returned BigInteger
is prime is beyond 1  1/pow(2, 80)
.this
which is probably prime.ArithmeticException
 if this < 0
.public static BigInteger probablePrime(int bitLength, Random unused)
BigInteger
instance in the range [0, pow(2, bitLength)1]
which is probably prime. The probability that
the returned BigInteger
is prime is beyond 1  1/pow(2, 80)
.
Implementation Note: Currently random
is ignored.
bitLength
 length of the new BigInteger
in bits.BigInteger
instance.IllegalArgumentException
 if bitLength < 2
.