Класс BigInteger
- Все реализуемые интерфейсы:
Serializable, Comparable<BigInteger>
public class BigInteger extends Number implements Comparable<BigInteger>
Семантика арифметических операций в точности соответствует семантике целочисленных арифметических операторов Java, определенной в Спецификации языка Java. Например, деление на ноль вызывает ArithmeticException, а при делении отрицательного числа на положительное получается отрицательный (или нулевой) остаток.
Семантика операций сдвига расширяет семантику операторов сдвига Java, допуская отрицательные величины сдвига. Сдвиг вправо на отрицательное расстояние приводит к сдвигу влево, и наоборот. Оператор беззнакового сдвига вправо (>>>) отсутствует, поскольку эта операция имеет смысл только для слова фиксированного размера, а не для представления, концептуально имеющего бесконечное число ведущих виртуальных знаковых битов.
Семантика побитовых логических операций в точности соответствует семантике целочисленных побитовых операторов Java. Бинарные операторы (and, or, xor) неявно выполняют знаковое расширение более короткого из двух операндов перед выполнением операции.
Операции сравнения выполняют сравнение целых чисел со знаком, аналогичное сравнению, выполняемому реляционными операторами и операторами равенства Java.
Операции модульной арифметики предназначены для вычисления остатков, возведения в степень и вычисления мультипликативных обратных элементов. Эти методы всегда возвращают неотрицательный результат в диапазоне от 0 до (modulus - 1) включительно.
Побитовые операции действуют на отдельный бит представления операнда в дополнительном коде. При необходимости выполняется знаковое расширение операнда, чтобы он содержал указанный бит. Ни одна из операций над отдельным битом не может изменить знак BigInteger, над которым выполняется операция, поскольку они затрагивают только один бит, а абстракция произвольно большой величины, предоставляемая этим классом, гарантирует, что перед каждым BigInteger концептуально существует бесконечное число «виртуальных знаковых битов».
Для краткости и ясности в описаниях методов BigInteger используется псевдокод. Выражение псевдокода (i + j) является сокращенной записью фразы «BigInteger, значение которого равно значению BigInteger i плюс значение BigInteger j». Выражение псевдокода (i == j) является сокращенной записью фразы «true тогда и только тогда, когда BigInteger i представляет то же значение, что и BigInteger j». Другие выражения псевдокода интерпретируются аналогично.
Все методы и конструкторы этого класса выбрасывают NullPointerException, если в качестве любого входного параметра передана ссылка на null. BigInteger должен поддерживать значения в диапазоне от -2Integer.MAX_VALUE (исключительно) до +2Integer.MAX_VALUE (исключительно) и может поддерживать значения за пределами этого диапазона. ArithmeticException выбрасывается, если конструктор или метод BigInteger приводит к созданию значения за пределами поддерживаемого диапазона. Диапазон возможных значений простых чисел ограничен и может быть меньше полного поддерживаемого положительного диапазона BigInteger. Диапазон должен быть не меньше чем от 1 до 2500000000.
- Примечание API:
-
Поскольку значения
BigIntegerпредставляют собой целые числа произвольной точности, алгоритмическая сложность методов этого класса различается и может быть сверхлинейной относительно размера входных данных. Например, ожидается, что метод вродеintValue()будет выполняться за O(1), то есть за постоянное время, поскольку при текущем внутреннем представлении для преобразования вintдостаточно получить доступ лишь к компоненту фиксированного размераBigInteger. В отличие от него, ожидается, что метод вродеnot()будет выполняться за время O(n), где n — размерBigIntegerв битах, то есть за время, пропорциональное размеру входных данных. Для умножения двух значенийBigIntegerразмера n наивный алгоритм умножения выполнялся бы за время O(n2), а теоретические результаты показывают, что алгоритм умножения чисел с использованием этой категории представления должен выполняться как минимум за O(n log n). К распространенным алгоритмам умножения, имеющим сложность между наивным и теоретическим пределами, относятся алгоритм Карацубы (O(n1.585)) и трехсторонний алгоритм Тума — Кука (O(n1.465)).Конкретная реализация
multiplyможет переключаться между различными алгоритмами в зависимости от входных данных, например, чтобы ускорить фактическое вычисление произведения, используя более простые алгоритмы для небольших входных данных, даже если асимптотическая сложность простого алгоритма выше.Операции также могут выделять память и выполнять вычисления над промежуточными результатами; такие выделения потенциально могут быть пропорциональны времени выполнения алгоритма.
Пользователи
BigInteger, которым необходимо ограничить время выполнения или объем памяти операций, могут отфильтровывать значенияBigInteger, превышающие выбранную величину. - Примечание по реализации:
- В эталонной реализации конструкторы и операции BigInteger выбрасывают
ArithmeticException, если результат выходит за пределы поддерживаемого диапазона от -2Integer.MAX_VALUE(исключительно) до +2Integer.MAX_VALUE(исключительно). - См. Спецификацию языка Java:
- 4.2.2 Целочисленные операции
- Начиная с версии:
- 1.1
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final BigInteger |
ONE |
Константа BigInteger, равная единице. |
static final BigInteger |
TEN |
Константа BigInteger, равная десяти. |
static final BigInteger |
TWO |
Константа BigInteger, равная двум. |
static final BigInteger |
ZERO |
Константа BigInteger, равная нулю. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
BigInteger |
Преобразует массив байтов, содержащий двоичное представление BigInteger в дополнительном коде, в BigInteger. |
BigInteger |
Преобразует подмассив байтов, содержащий двоичное представление BigInteger в дополнительном коде, в BigInteger. |
BigInteger |
Преобразует представление BigInteger в форме «знак и модуль» в BigInteger. |
BigInteger |
Преобразует представление BigInteger в форме «знак и модуль» в BigInteger. |
BigInteger |
Создает случайное положительное число BigInteger, которое с высокой вероятностью является простым, с заданной длиной в битах. |
BigInteger |
Создает случайное число BigInteger, равномерно распределенное в диапазоне от 0 до (2 numBits - 1) включительно. |
BigInteger |
Преобразует десятичное строковое представление BigInteger в BigInteger. |
BigInteger |
Преобразует строковое представление BigInteger в указанной системе счисления в BigInteger. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
BigInteger |
abs() |
Возвращает BigInteger, значение которого равно абсолютному значению этого BigInteger. |
BigInteger |
add |
Возвращает BigInteger, значение которого равно (this + val). |
BigInteger |
and |
Возвращает BigInteger, значение которого равно (this & val). |
BigInteger |
andNot |
Возвращает BigInteger, значение которого равно (this & ~val). |
int |
bitCount() |
Возвращает количество битов в представлении этого BigInteger в дополнительном коде, отличающихся от его знакового бита. |
int |
bitLength() |
Возвращает количество битов в минимальном представлении этого BigInteger в дополнительном коде, не включая знаковый бит. |
byte |
byteValueExact() |
Преобразует этот BigInteger в byte, проверяя потерю информации. |
BigInteger |
clearBit |
Возвращает BigInteger, значение которого эквивалентно этому BigInteger с очищенным указанным битом. |
int |
compareTo |
Сравнивает этот BigInteger с указанным BigInteger. |
BigInteger |
divide |
Возвращает BigInteger, значение которого равно (this / val). |
BigInteger[] |
divideAndRemainder |
Возвращает массив из двух BigInteger, содержащий (this / val), за которым следует (this % val). |
double |
doubleValue() |
Преобразует этот BigInteger в double. |
boolean |
equals |
Сравнивает этот BigInteger с указанным объектом на равенство. |
BigInteger |
flipBit |
Возвращает BigInteger, значение которого эквивалентно этому BigInteger с инвертированным указанным битом. |
float |
floatValue() |
Преобразует этот BigInteger в float. |
BigInteger |
gcd |
Возвращает наибольший общий делитель abs(this) и abs(val). |
int |
getLowestSetBit() |
Возвращает индекс крайнего справа (младшего) единичного бита в этом BigInteger (количество нулевых битов справа от крайнего справа единичного бита). |
int |
hashCode() |
Возвращает хеш-код этого BigInteger. |
int |
intValue() |
Преобразует этот BigInteger в int. |
int |
intValueExact() |
Преобразует этот BigInteger в int, проверяя потерю информации. |
boolean |
isProbablePrime |
Возвращает true, если это BigInteger, вероятно, является простым числом, и false, если оно заведомо составное. |
long |
longValue() |
Преобразует этот BigInteger в long. |
long |
longValueExact() |
Преобразует этот BigInteger в long, проверяя потерю информации. |
BigInteger |
max |
Возвращает максимум из этого BigInteger и val. |
BigInteger |
min |
Возвращает минимум из этого BigInteger и val. |
BigInteger |
mod |
Возвращает BigInteger, значение которого равно (this mod m). |
BigInteger |
modInverse |
Возвращает BigInteger, значение которого равно (this-1 mod m). |
BigInteger |
modPow |
Возвращает BigInteger, значение которого равно (thisexponent mod m). |
BigInteger |
multiply |
Возвращает BigInteger, значение которого равно (this * val). |
BigInteger |
negate() |
Возвращает BigInteger, значение которого равно (-this). |
BigInteger |
nextProbablePrime() |
Возвращает первое целое число, большее этого BigInteger, которое с высокой вероятностью является простым. |
BigInteger |
not() |
Возвращает BigInteger, значение которого равно (~this). |
BigInteger |
or |
Возвращает BigInteger, значение которого равно (this | val). |
BigInteger |
parallelMultiply |
Возвращает BigInteger, значение которого равно (this * val). |
BigInteger |
pow |
Возвращает BigInteger, значение которого равно (thisexponent). |
static BigInteger |
probablePrime |
Возвращает положительное число BigInteger, которое с высокой вероятностью является простым, с заданной длиной в битах. |
BigInteger |
remainder |
Возвращает BigInteger, значение которого равно (this % val). |
BigInteger |
rootn |
Возвращает целочисленный корень n-й степени из этого BigInteger. |
BigInteger[] |
rootnAndRemainder |
Возвращает массив из двух BigInteger, содержащий целочисленный корень n-й степени r из this и соответствующий остаток this - rn. |
BigInteger |
setBit |
Возвращает BigInteger, значение которого эквивалентно этому BigInteger с установленным указанным битом. |
BigInteger |
shiftLeft |
Возвращает BigInteger, значение которого равно (this << n). |
BigInteger |
shiftRight |
Возвращает BigInteger, значение которого равно (this >> n). |
short |
shortValueExact() |
Преобразует этот BigInteger в short, проверяя потерю информации. |
int |
signum() |
Возвращает знак этого BigInteger. |
BigInteger |
sqrt() |
Возвращает целочисленный квадратный корень из этого BigInteger. |
BigInteger[] |
sqrtAndRemainder() |
Возвращает массив из двух BigInteger, содержащий целочисленный квадратный корень s из this и соответствующий остаток this - s*s. |
BigInteger |
subtract |
Возвращает BigInteger, значение которого равно (this - val). |
boolean |
testBit |
Возвращает true тогда и только тогда, когда указанный бит установлен. |
byte[] |
toByteArray() |
Возвращает массив байтов, содержащий представление этого BigInteger в дополнительном коде. |
String |
toString() |
Возвращает десятичное строковое представление этого BigInteger. |
String |
toString |
Возвращает строковое представление этого BigInteger в заданной системе счисления. |
static BigInteger |
valueOf |
Возвращает BigInteger, значение которого равно значению указанного long. |
BigInteger |
xor |
Возвращает BigInteger, значение которого равно (this ^ val). |
Методы, объявленные в классе Number
byteValue, shortValue | Модификатор и тип | Метод | Описание |
|---|---|---|
byte |
byteValue() |
Возвращает значение указанного числа в виде byte. |
short |
shortValue() |
Возвращает значение указанного числа в виде short. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация устарела и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного интервала реального времени. |
final void |
wait |
Переводит текущий поток в состояние ожидания до его пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного интервала реального времени. |
Подробное описание полей
ZERO
public static final BigInteger ZERO
- Начиная с:
- 1.2
ONE
public static final BigInteger ONE
- Начиная с:
- 1.2
TWO
public static final BigInteger TWO
- Начиная с:
- 9
TEN
public static final BigInteger TEN
- Начиная с:
- 1.5
Подробное описание конструкторов
BigInteger
public BigInteger(byte[] val, int off, int len)
off. Предполагается, что массив val не изменяется в течение вызова конструктора. Выбрасывается IndexOutOfBoundsException, если длина массива val ненулевая и выполняется хотя бы одно из условий: off отрицательно, len отрицательно или off+len больше длины val.- Параметры:
-
val— массив байтов, содержащий подмассив, который является двоичным представлением BigInteger в дополнительном коде, расположенным в порядке от старшего к младшему. -
off— начальное смещение двоичного представления. -
len— количество используемых байтов. - Выбрасывает:
-
NumberFormatException— если длинаvalравна нулю байтов. -
IndexOutOfBoundsException— если заданные смещение и длина массива приводят к отрицательному индексу в массиве байтов или к индексу, большему либо равному длине массива. - Начиная с:
- 9
BigInteger
public BigInteger(byte[] val)
val не изменяется в течение вызова конструктора.- Параметры:
-
val— двоичное представление BigInteger в дополнительном коде, расположенное в порядке от старшего к младшему. - Выбрасывает:
-
NumberFormatException— если длинаvalравна нулю байтов.
BigInteger
public BigInteger(int signum, byte[] magnitude, int off, int len)
off. Допускается нулевая длина len; в этом случае значением BigInteger будет 0 независимо от того, равно signum -1, 0 или 1. Предполагается, что массив magnitude не изменяется в течение вызова конструктора. Выбрасывается IndexOutOfBoundsException, если длина массива magnitude ненулевая и выполняется хотя бы одно из условий: off отрицательно, len отрицательно или off+len больше длины magnitude.- Параметры:
-
signum— знак числа (-1 для отрицательного числа, 0 для нуля, 1 для положительного числа). -
magnitude— двоичное представление модуля числа в порядке от старшего к младшему. -
off— начальное смещение двоичного представления. -
len— количество используемых байтов. - Выбрасывает:
-
NumberFormatException— еслиsignumне является одним из трёх допустимых значений (-1, 0 и 1) или еслиsignumравно 0, аmagnitudeсодержит один или несколько ненулевых байтов. -
IndexOutOfBoundsException— если заданные смещение и длина массива приводят к отрицательному индексу в массиве байтов или к индексу, большему либо равному длине массива. - Начиная с:
- 9
BigInteger
public BigInteger(int signum, byte[] magnitude)
magnitude не изменяется в течение вызова конструктора.- Параметры:
-
signum— знак числа (-1 для отрицательного числа, 0 для нуля, 1 для положительного числа). -
magnitude— двоичное представление модуля числа в порядке от старшего к младшему. - Выбрасывает:
-
NumberFormatException— еслиsignumне является одним из трёх допустимых значений (-1, 0 и 1) или еслиsignumравно 0, аmagnitudeсодержит один или несколько ненулевых байтов.
BigInteger
public BigInteger(String val, int radix)
Character.digit. Строка не должна содержать посторонних символов (например, пробельных).- Параметры:
-
val— строковое представление BigInteger. -
radix— система счисления для интерпретацииval. - Выбрасывает:
-
NumberFormatException— еслиvalне является допустимым представлением BigInteger в указанной системе счисления или еслиradixнаходится вне диапазона отCharacter.MIN_RADIXдоCharacter.MAX_RADIXвключительно.
BigInteger
public BigInteger(String val)
Character.digit. Строка не должна содержать посторонних символов (например, пробельных).- Параметры:
-
val— десятичное строковое представление BigInteger. - Выбрасывает:
-
NumberFormatException— еслиvalне является допустимым представлением BigInteger.
BigInteger
public BigInteger(int numBits, Random rnd)
numBits - 1) включительно. Равномерность распределения предполагает, что в rnd предоставляется источник случайных битов с равномерным распределением. Обратите внимание: этот конструктор всегда создаёт неотрицательное значение BigInteger.- Параметры:
-
numBits— максимальная длина в битах нового значения BigInteger. -
rnd— источник случайных данных, используемый для вычисления нового значения BigInteger. - Выбрасывает:
-
IllegalArgumentException— еслиnumBitsотрицательно. - См. также:
BigInteger
public BigInteger(int bitLength, int certainty, Random rnd)
- Примечание к API:
- Рекомендуется использовать метод
probablePrimeвместо этого конструктора, если только нет веской причины указывать уровень достоверности. - Параметры:
-
bitLength— длина в битах возвращаемого значения BigInteger. -
certainty— мера неопределённости, которую вызывающий код готов допустить. Вероятность того, что новое значение BigInteger является простым числом, будет больше (1 - 1/2certainty). Время выполнения этого конструктора пропорционально значению данного параметра. -
rnd— источник случайных битов, используемый для выбора кандидатов, проверяемых на простоту. - Выбрасывает:
-
ArithmeticException— еслиbitLength < 2илиbitLengthслишком велико. - См. также:
Подробное описание методов
probablePrime
public static BigInteger probablePrime(int bitLength, Random rnd)
- Параметры:
-
bitLength— длина в битах возвращаемого значения BigInteger. -
rnd— источник случайных битов, используемый для выбора кандидатов, проверяемых на простоту. - Возвращает:
- значение BigInteger длиной
bitLengthбит, которое, вероятно, является простым числом - Выбрасывает:
-
ArithmeticException— еслиbitLength < 2илиbitLengthслишком велико. - Начиная с:
- 1.4
- См. также:
nextProbablePrime
public BigInteger nextProbablePrime()
BigInteger, которое, вероятно, является простым. Вероятность того, что число, возвращаемое этим методом, является составным, не превышает 2-100. При поиске этот метод никогда не пропускает простые числа: если он возвращает p, не существует простого числа q такого, что this < q < p.- Примечание по реализации:
- Из-за особенностей базового алгоритма и в зависимости от размера
thisэтот метод может потреблять большой объём памяти, вплоть до исчерпания доступной памяти кучи, или выполняться очень долго. - Возвращает:
- первое целое число, большее этого
BigInteger, которое, вероятно, является простым. - Выбрасывает:
-
ArithmeticException— еслиthis < 0илиthisслишком велико. - Начиная с:
- 1.5
valueOf
public static BigInteger valueOf(long val)
long.- Примечание к API:
- Этот статический фабричный метод предпочтительнее конструктора (
long), поскольку позволяет повторно использовать часто используемые значения BigInteger. - Параметры:
-
val— значение BigInteger, которое нужно вернуть. - Возвращает:
- значение BigInteger с указанным значением.
add
public BigInteger add(BigInteger val)
(this + val).- Параметры:
-
val— значение, которое нужно прибавить к этому значению BigInteger. - Возвращает:
this + val
subtract
public BigInteger subtract(BigInteger val)
(this - val).- Параметры:
-
val— значение, которое нужно вычесть из этого значения BigInteger. - Возвращает:
this - val
multiply
public BigInteger multiply(BigInteger val)
(this * val).- Примечание по реализации:
- Реализация может обеспечить более высокую алгоритмическую производительность, если
val == this. - Параметры:
-
val— значение, на которое умножается это значение BigInteger. - Возвращает:
this * val
parallelMultiply
public BigInteger parallelMultiply(BigInteger val)
(this * val). Если оба значения this и val велики (обычно имеют длину в тысячи бит), может применяться параллельное умножение. Этот метод возвращает точно такой же математический результат, как multiply(BigInteger).- Примечание по реализации:
- Эта реализация может обеспечить более высокую алгоритмическую производительность, если
val == this. По сравнению сmultiply(BigInteger), алгоритм параллельного умножения в реализации обычно использует больше ресурсов ЦП, чтобы быстрее вычислить результат, и может при этом немного увеличить потребление памяти. - Параметры:
-
val— значение, на которое умножается это значение BigInteger. - Возвращает:
this * val- Начиная с:
- 19
- См. также:
divide
public BigInteger divide(BigInteger val)
(this / val).- Параметры:
-
val— значение, на которое делится это значение BigInteger. - Возвращает:
this / val- Выбрасывает:
-
ArithmeticException— еслиvalравно нулю.
divideAndRemainder
public BigInteger[] divideAndRemainder(BigInteger val)
(this / val), затем (this % val).- Параметры:
-
val— значение, на которое делится это значение BigInteger и для которого вычисляется остаток. - Возвращает:
- массив из двух значений BigInteger: частное
(this / val)является первым элементом, а остаток(this % val)— последним. - Выбрасывает:
-
ArithmeticException— еслиvalравно нулю.
remainder
public BigInteger remainder(BigInteger val)
(this % val).- Параметры:
-
val— значение, на которое делится это значение BigInteger и для которого вычисляется остаток. - Возвращает:
this % val- Выбрасывает:
-
ArithmeticException— еслиvalравно нулю.
pow
public BigInteger pow(int exponent)
(thisexponent). Обратите внимание, что exponent — целое число, а не BigInteger.- Параметры:
-
exponent— показатель степени, в которую возводится это значение BigInteger. - Возвращает:
thisexponent- Выбрасывает:
-
ArithmeticException— еслиexponentотрицательно. (В этом случае результат операции не будет целым числом.)
sqrt
public BigInteger sqrt()
n — это наибольшее математическое целое число s, такое что s*s <= n. Он равен значению floor(sqrt(n)), где sqrt(n) обозначает действительный квадратный корень из n, рассматриваемого как действительное число. Обратите внимание: целочисленный квадратный корень будет меньше действительного квадратного корня, если последний не представим целым значением.- Возвращает:
- целочисленный квадратный корень из
this - Выбрасывает:
-
ArithmeticException— еслиthisотрицательно. (Квадратный корень отрицательного целого числаvalравен(i * sqrt(-val)), где i — мнимая единица, равнаяsqrt(-1).) - Начиная с:
- 9
sqrtAndRemainder
public BigInteger[] sqrtAndRemainder()
s из this и соответствующий остаток this - s*s.- Возвращает:
- массив из двух значений BigInteger: целочисленный квадратный корень находится по смещению 0, а остаток — по смещению 1
- Выбрасывает:
-
ArithmeticException— еслиthisотрицательно. (Квадратный корень отрицательного целого числаvalравен(i * sqrt(-val)), где i — мнимая единица, равнаяsqrt(-1).) - Начиная с:
- 9
- См. также:
rootn
public BigInteger rootn(int n)
n-й из этого значения BigInteger. Целочисленный корень степени n-й r соответствующего математического целого числа x определяется следующим образом: - если
x≥ 0, тоr≥ 0 — наибольшее целое число, такое чтоrn≤x; - если
x< 0, тоr≤ 0 — наименьшее целое число, такое чтоrn≥x.
x.signum()⋅ ⌊|nthRoot(x, n)|⌋, где nthRoot(x, n) обозначает действительный корень степени n-й из x, рассматриваемого как действительное число. В противном случае метод выбрасывает ArithmeticException. Обратите внимание: модуль целочисленного корня степени n-й будет меньше модуля действительного корня степени n-й, если последний не представим целым значением.
- Примечание к API:
- Обратите внимание, что вызов
rootn(2)эквивалентен вызовуsqrt(). - Параметры:
-
n— степень корня - Возвращает:
- целочисленный корень степени
n-й изthis - Выбрасывает:
-
ArithmeticException— еслиn <= 0. -
ArithmeticException— еслиnчётно иthisотрицательно. - Начиная с:
- 26
- См. также:
rootnAndRemainder
public BigInteger[] rootnAndRemainder(int n)
n-й r из this и соответствующий остаток this - rn.- Примечание к API:
- Обратите внимание, что вызов
rootnAndRemainder(2)эквивалентен вызовуsqrtAndRemainder(). - Параметры:
-
n— степень корня - Возвращает:
- массив из двух значений BigInteger: целочисленный корень степени
n-й находится по смещению 0, а остаток — по смещению 1 - Выбрасывает:
-
ArithmeticException— еслиn <= 0. -
ArithmeticException— еслиnчётно иthisотрицательно. - Начиная с:
- 26
- См. также:
gcd
public BigInteger gcd(BigInteger val)
abs(this) и abs(val). Возвращает 0, если this == 0 && val == 0.- Параметры:
-
val— значение, с которым вычисляется НОД. - Возвращает:
GCD(abs(this), abs(val))
abs
public BigInteger abs()
- Возвращает:
abs(this)
negate
public BigInteger negate()
(-this).- Возвращает:
-this
signum
public int signum()
- Возвращает:
- -1, 0 или 1 в зависимости от того, является ли это значение BigInteger отрицательным, нулевым или положительным.
mod
public BigInteger mod(BigInteger m)
(this mod m). Этот метод отличается от remainder тем, что всегда возвращает неотрицательное значение BigInteger.- Параметры:
-
m— модуль. - Возвращает:
this mod m- Выбрасывает:
-
ArithmeticException— еслиm≤ 0 - См. также:
modPow
public BigInteger modPow(BigInteger exponent, BigInteger m)
(thisexponent mod m). (В отличие от pow, этот метод допускает отрицательные показатели степени.)- Параметры:
-
exponent— показатель степени. -
m— модуль. - Возвращает:
thisexponent mod m- Выбрасывает:
-
ArithmeticException— еслиm≤ 0 либо если показатель степени отрицателен, а это значение BigInteger не является взаимно простым сm. - См. также:
modInverse
public BigInteger modInverse(BigInteger m)
(this-1 по модулю mod m).- Параметры:
-
m— модуль. - Возвращает:
-
this-1 по модулюmod m. - Выбрасывает:
-
ArithmeticException— еслиm≤ 0 или это значение BigInteger не имеет обратного по умножению по модулю m (то есть это значение BigInteger не является взаимно простым с m).
shiftLeft
public BigInteger shiftLeft(int n)
(this << n). Расстояние сдвига n может быть отрицательным; в этом случае метод выполняет сдвиг вправо. (Вычисляет floor(this * 2n).)- Параметры:
-
n— расстояние сдвига в битах. - Возвращает:
this << n- См. также:
shiftRight
public BigInteger shiftRight(int n)
(this >> n). Выполняется знаковое расширение. Расстояние сдвига n может быть отрицательным; в этом случае метод выполняет сдвиг влево. (Вычисляет floor(this / 2n).)- Параметры:
-
n— расстояние сдвига в битах. - Возвращает:
this >> n- См. также:
and
public BigInteger and(BigInteger val)
(this & val). (Этот метод возвращает отрицательное значение BigInteger тогда и только тогда, когда и это значение, и val отрицательны.)- Параметры:
-
val— значение, к которому применяется операция AND с этим значением BigInteger. - Возвращает:
this & val
or
public BigInteger or(BigInteger val)
(this | val). (Этот метод возвращает отрицательное значение BigInteger тогда и только тогда, когда отрицательно это значение или val.)- Параметры:
-
val— значение, к которому применяется операция OR с этим значением BigInteger. - Возвращает:
this | val
xor
public BigInteger xor(BigInteger val)
(this ^ val). (Этот метод возвращает отрицательное значение BigInteger тогда и только тогда, когда ровно одно из значений — это значение или val — отрицательно.)- Параметры:
-
val— значение, к которому применяется операция XOR с этим значением BigInteger. - Возвращает:
this ^ val
not
public BigInteger not()
(~this). (Этот метод возвращает отрицательное значение тогда и только тогда, когда это значение BigInteger неотрицательно.)- Возвращает:
~this
andNot
public BigInteger andNot(BigInteger val)
(this & ~val). Этот метод, эквивалентный and(val.not()), предоставляется для удобства выполнения операций маскирования. (Этот метод возвращает отрицательный BigInteger тогда и только тогда, когда this отрицателен, а val положителен.)- Параметры:
-
val— значение, которое нужно инвертировать и выполнить над ним операцию AND с этим BigInteger. - Возвращает:
this & ~val
testBit
public boolean testBit(int n)
true тогда и только тогда, когда указанный бит установлен. (Вычисляет ((this & (1<<n)) != 0).)- Параметры:
-
n— индекс проверяемого бита. - Возвращает:
-
trueтогда и только тогда, когда указанный бит установлен. - Выбрасывает:
-
ArithmeticException— еслиnотрицателен.
setBit
public BigInteger setBit(int n)
(this | (1<<n)).)- Параметры:
-
n— индекс устанавливаемого бита. - Возвращает:
this | (1<<n)- Выбрасывает:
-
ArithmeticException— еслиnотрицателен.
clearBit
public BigInteger clearBit(int n)
(this & ~(1<<n)).)- Параметры:
-
n— индекс очищаемого бита. - Возвращает:
this & ~(1<<n)- Выбрасывает:
-
ArithmeticException— еслиnотрицателен.
flipBit
public BigInteger flipBit(int n)
(this ^ (1<<n)).)- Параметры:
-
n— индекс инвертируемого бита. - Возвращает:
this ^ (1<<n)- Выбрасывает:
-
ArithmeticException— еслиnотрицателен.
getLowestSetBit
public int getLowestSetBit()
(this == 0? -1 : log2(this & -this)).)- Возвращает:
- индекс крайнего правого единичного бита в этом BigInteger.
bitLength
public int bitLength()
0. (Вычисляет (ceil(log2(this < 0 ? -this : this+1))).)- Возвращает:
- количество битов в минимальном представлении этого BigInteger в дополнительном коде, не включая знаковый бит.
bitCount
public int bitCount()
- Возвращает:
- количество битов в представлении этого BigInteger в дополнительном коде, отличающихся от его знакового бита.
isProbablePrime
public boolean isProbablePrime(int certainty)
true, если этот BigInteger, вероятно, является простым числом, и false, если он определённо является составным числом. Если certainty ≤ 0, возвращается true.- Примечание по реализации:
- Из-за особенностей используемого алгоритма проверки простоты и в зависимости от размера
thisиcertaintyэтот метод может потреблять большой объём памяти, вплоть до исчерпания доступного пространства кучи, или выполняться очень долго. - Параметры:
-
certainty— мера неопределённости, которую вызывающий код готов принять: если вызов возвращаетtrue, вероятность того, что этот BigInteger является простым числом, превышает (1 - 1/2certainty). Время выполнения этого метода пропорционально значению данного параметра. - Возвращает:
-
true, если этот BigInteger, вероятно, является простым числом, иfalse, если он определённо является составным числом. - Выбрасывает:
-
ArithmeticException— еслиthisслишком велико.
compareTo
public int compareTo(BigInteger val)
(x.compareTo(y) <op> 0), где <op> — один из шести операторов сравнения.- Определён в:
-
compareToв интерфейсеComparable<BigInteger> - Параметры:
-
val— BigInteger, с которым сравнивается этот BigInteger. - Возвращает:
- -1, 0 или 1, если этот BigInteger численно меньше, равен или больше
valсоответственно.
equals
public boolean equals(Object x)
min
public BigInteger min(BigInteger val)
val.- Параметры:
-
val— значение, с которым вычисляется минимум. - Возвращает:
- BigInteger, значение которого меньше из значений этого BigInteger и
val. Если они равны, может быть возвращено любое из них.
max
public BigInteger max(BigInteger val)
val.- Параметры:
-
val— значение, с которым вычисляется максимум. - Возвращает:
- BigInteger, значение которого больше из значений этого BigInteger и
val. Если они равны, может быть возвращено любое из них.
hashCode
toString
public String toString(int radix)
Character.MIN_RADIX до Character.MAX_RADIX включительно, по умолчанию используется основание 10 (как и в Integer.toString). Используется соответствие цифр символам, предоставляемое Character.forDigit; при необходимости перед числом ставится знак минус. (Это представление совместимо с конструктором (String,
int).)- Параметры:
-
radix— основание системы счисления для строкового представления. - Возвращает:
- строковое представление этого BigInteger в заданной системе счисления.
- См. также:
toString
public String toString()
Character.forDigit; при необходимости перед числом ставится знак минус. (Это представление совместимо с конструктором (String) и позволяет выполнять конкатенацию строк с помощью оператора + в Java.)toByteArray
public byte[] toByteArray()
(ceil((this.bitLength() +
1)/8)). (Это представление совместимо с конструктором (byte[]).)- Возвращает:
- массив байтов, содержащий представление этого BigInteger в дополнительном коде.
- См. также:
intValue
public int intValue()
int. Это преобразование аналогично сужающему преобразованию примитивов из long в int, определённому в Спецификации языка Java: если этот BigInteger слишком велик, чтобы поместиться в int, возвращаются только младшие 32 бита. Обратите внимание, что при таком преобразовании могут быть потеряны сведения об общей величине значения BigInteger, а результат может иметь противоположный знак.- Определён в:
-
intValueв классеNumber - Возвращает:
- этот BigInteger, преобразованный в
int. - См. Спецификацию языка Java:
- 5.1.3 Сужающее преобразование примитивов
- См. также:
longValue
public long longValue()
long. Это преобразование аналогично сужающему преобразованию примитивов из long в int, определённому в Спецификации языка Java: если этот BigInteger слишком велик, чтобы поместиться в long, возвращаются только младшие 64 бита. Обратите внимание, что при таком преобразовании могут быть потеряны сведения об общей величине значения BigInteger, а результат может иметь противоположный знак.- Определён в:
-
longValueв классеNumber - Возвращает:
- этот BigInteger, преобразованный в
long. - См. Спецификацию языка Java:
- 5.1.3 Сужающее преобразование примитивов
- См. также:
floatValue
public float floatValue()
float. Это преобразование аналогично сужающему преобразованию примитивов из double в float, определённому в Спецификации языка Java: если величина этого BigInteger слишком велика для представления в виде float, он будет преобразован в Float.NEGATIVE_INFINITY или Float.POSITIVE_INFINITY, в зависимости от знака. Обратите внимание, что даже если возвращаемое значение конечно, при таком преобразовании может быть потеряна информация о точности значения BigInteger.- Определён в:
-
floatValueв классеNumber - Возвращает:
- этот BigInteger, преобразованный в
float. - См. Спецификацию языка Java:
- 5.1.3 Сужающее преобразование примитивов
doubleValue
public double doubleValue()
double. Это преобразование аналогично сужающему преобразованию примитивов из double в float, определённому в Спецификации языка Java: если величина этого BigInteger слишком велика для представления в виде double, он будет преобразован в Double.NEGATIVE_INFINITY или Double.POSITIVE_INFINITY, в зависимости от знака. Обратите внимание, что даже если возвращаемое значение конечно, при таком преобразовании может быть потеряна информация о точности значения BigInteger.- Определён в:
-
doubleValueв классеNumber - Возвращает:
- этот BigInteger, преобразованный в
double. - См. Спецификацию языка Java:
- 5.1.3 Сужающее преобразование примитивов
longValueExact
public long longValueExact()
BigInteger в long с проверкой на потерю информации. Если значение этого BigInteger выходит за пределы диапазона типа long, выбрасывается ArithmeticException.- Возвращает:
- этот
BigInteger, преобразованный вlong. - Выбрасывает:
-
ArithmeticException— если значениеthisневозможно точно представить в видеlong. - Начиная с версии:
- 1.8
- См. также:
intValueExact
public int intValueExact()
BigInteger в int с проверкой на потерю информации. Если значение этого BigInteger выходит за пределы диапазона типа int, выбрасывается ArithmeticException.- Возвращает:
- этот
BigInteger, преобразованный вint. - Выбрасывает:
-
ArithmeticException— если значениеthisневозможно точно представить в видеint. - Начиная с версии:
- 1.8
- См. также:
shortValueExact
public short shortValueExact()
BigInteger в short с проверкой на потерю информации. Если значение этого BigInteger выходит за пределы диапазона типа short, выбрасывается ArithmeticException.- Возвращает:
- этот
BigInteger, преобразованный вshort. - Выбрасывает:
-
ArithmeticException— если значениеthisневозможно точно представить в видеshort. - Начиная с версии:
- 1.8
- См. также:
byteValueExact
public byte byteValueExact()
BigInteger в byte с проверкой на потерю информации. Если значение этого BigInteger выходит за пределы диапазона типа byte, выбрасывается ArithmeticException.- Возвращает:
- этот
BigInteger, преобразованный вbyte. - Выбрасывает:
-
ArithmeticException— если значениеthisневозможно точно представить в видеbyte. - Начиная с версии:
- 1.8
- См. также:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.