Класс 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». Другие псевдокодовые выражения интерпретируются аналогичным образом.
Все методы и конструкторы этого класса при передаче null-ссылки в качестве любого входного параметра вызывают NullPointerException. BigInteger должен поддерживать значения в диапазоне от -2Integer.MAX_VALUE (не включая границу) до +2Integer.MAX_VALUE (не включая границу) и может поддерживать значения за пределами этого диапазона. Если конструктор или метод BigInteger приводит к созданию значения за пределами поддерживаемого диапазона, вызывается ArithmeticException. Диапазон вероятных простых чисел ограничен и может быть меньше полного поддерживаемого положительного диапазона 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 |
Возвращает BigInteger, значение которого равно наибольшему общему делителю 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 |
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
Подробное описание полей
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
- См. также:
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-1mod 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— значение, которое инвертируется и объединяется с этим числом BigInteger операцией AND. - Возвращает:
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/math/BigInteger.html