Spec-Zone.ru › OpenJDK 24

Класс BigInteger

java.lang.Object
java.lang.Number
java.math.BigInteger
Все реализованные интерфейсы:
Serializable, Comparable<BigInteger>
public class BigInteger extends Number implements Comparable<BigInteger>
Неизменяемые целые числа произвольной точности. Все операции ведут себя так, как если бы BigIntegers были представлены в дополнительном коде к двум (как примитивные типы целых чисел Java). BigInteger предоставляет аналоги всех примитивных целочисленных операторов Java, а также всех соответствующих методов из java.lang.Math. Кроме того, BigInteger предоставляет операции для модулярной арифметики, вычисления НОД, проверки простоты, генерации простых чисел, манипулирования битами и некоторых других дополнительных операций.

Семантика арифметических операций точно имитирует семантику целочисленных арифметических операторов Java, как определено в Спецификации языка Java. Например, деление на ноль вызывает исключение ArithmeticException, а деление отрицательного числа на положительное дает отрицательный (или нулевой) остаток.

Семантика операций сдвига расширяет семантику операторов сдвига Java, чтобы позволить отрицательные значения сдвига. Сдвиг вправо с отрицательным значением сдвига приводит к сдвигу влево, и наоборот. Оператор беззнакового сдвига вправо (>>>) опущен, поскольку эта операция имеет смысл только для слова фиксированной длины, а не для представления, концептуально имеющего бесконечное количество виртуальных знаковых битов.

Семантика побитовых логических операций точно имитирует семантику побитовых целочисленных операторов Java. Бинарные операторы (and, or, xor) неявно выполняют расширение знака для более короткого из двух операндов перед выполнением операции.

Операции сравнения выполняют сравнения целых чисел со знаком, аналогично сравнениям, выполняемым операторами отношения и равенства Java.

Предоставляются операции модулярной арифметики для вычисления остатков, выполнения возведения в степень и вычисления мультипликативных обратных элементов. Эти методы всегда возвращают неотрицательный результат, в диапазоне от 0 до (modulus - 1) включительно.

Операции с битами работают с одним битом в представлении своего операнда в дополнительном коде к двум. При необходимости операнд расширяется знаком, чтобы содержать указанный бит. Ни одна из операций с одним битом не может создать BigInteger с другим знаком, чем у оперируемого BigInteger, так как они влияют только на один бит, и абстракция произвольной длины, предоставляемая этим классом, гарантирует, что концептуально существует бесконечно много «виртуальных знаковых битов», предшествующих каждому BigInteger.

Для краткости и ясности в описаниях методов BigInteger используется псевдокод. Выражение псевдокода (i + j) обозначает "BigInteger, значение которого равно значению BigInteger i плюс значение BigInteger j". Выражение псевдокода (i == j) означает "true тогда и только тогда, когда BigInteger i представляет то же значение, что и BigInteger j". Другие выражения псевдокода интерпретируются аналогично.

Все методы и конструкторы в этом классе выбрасывают NullPointerException при передаче нулевого ссылки на объект для любого входного параметра. 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)) и 3-стороннее умножение Тома-Кука (O(n1.465)).

Конкретная реализация multiply может свободно переключаться между различными алгоритмами для различных входных данных, например, чтобы улучшить фактическое время выполнения для получения произведения, используя более простые алгоритмы для меньших входных данных, даже если у более простого алгоритма более высокая асимптотическая сложность.

Операции также могут выделять и обрабатывать промежуточные результаты, потенциально такие выделения могут быть пропорциональны времени выполнения алгоритма.

Пользователи BigInteger, озабоченные ограничением времени выполнения или объема памяти операций, могут отфильтровать значения BigInteger, превышающие выбранное значение.

Заметка по реализации:
В эталонной реализации конструкторы и операции BigInteger выбрасывают ArithmeticException, когда результат выходит за поддерживаемый диапазон от -2Integer.MAX_VALUE (исключая) до +2Integer.MAX_VALUE (исключая).
См. Спецификацию языка Java:
4.2.2 Целочисленные операции
С момента:
1.1
См. также:
  • BigDecimal
  • Сериализованная форма

Краткое описание полей

Модификатор и тип Поле Описание
static final BigInteger ONE
Константа BigInteger единица.
static final BigInteger TEN
Константа BigInteger десять.
static final BigInteger TWO
Константа BigInteger два.
static final BigInteger ZERO
Константа BigInteger ноль.

Краткое описание конструкторов

Конструктор Описание
BigInteger(byte[] val)
Преобразует массив байтов, содержащий двоичное представление BigInteger в дополнительном коде к двум, в BigInteger.
BigInteger(byte[] val, int off, int len)
Преобразует подмассив байтов, содержащий двоичное представление BigInteger в дополнительном коде к двум, в BigInteger.
BigInteger(int signum, byte[] magnitude)
Преобразует представление BigInteger в формате знак-величина в BigInteger.
BigInteger(int signum, byte[] magnitude, int off, int len)
Преобразует представление BigInteger в формате знак-величина в BigInteger.
BigInteger(int bitLength, int certainty, Random rnd)
Создает случайный положительный BigInteger, который, вероятно, является простым, с указанной длиной в битах.
BigInteger(int numBits, Random rnd)
Создает случайный BigInteger, равномерно распределённый в диапазоне от 0 до (2numBits - 1) включительно.
BigInteger(String val)
Преобразует десятичное строковое представление BigInteger в BigInteger.
BigInteger(String val, int radix)
Преобразует строковое представление BigInteger в заданной системе счисления в BigInteger.

Краткое описание методов

Модификатор и тип Метод Описание
BigInteger abs()
Возвращает BigInteger, значение которого равно модулю этого BigInteger.
BigInteger add(BigInteger val)
Возвращает BigInteger, значение которого равно (this + val).
BigInteger and(BigInteger val)
Возвращает BigInteger, значение которого равно (this & val).
BigInteger andNot(BigInteger val)
Возвращает BigInteger, значение которого равно (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)
Возвращает BigInteger, значение которого равно (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()
Возвращает индекс правого (самого младшего) бита 1 в этом BigInteger (число нулевых битов справа от правого бита 1).
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)
Возвращает BigInteger, значение которого равно (this mod m).
BigInteger modInverse(BigInteger m)
Возвращает BigInteger, значение которого равно (this-1 mod m).
BigInteger modPow(BigInteger exponent, BigInteger m)
Возвращает BigInteger, значение которого равно (thisexponent mod m).
BigInteger multiply(BigInteger val)
Возвращает BigInteger, значение которого равно (this * val).
BigInteger negate()
Возвращает BigInteger, значение которого равно (-this).
BigInteger nextProbablePrime()
Возвращает первое целое число, большее этого BigInteger, которое, вероятно, является простым.
BigInteger not()
Возвращает BigInteger, значение которого равно (~this).
BigInteger or(BigInteger val)
Возвращает BigInteger, значение которого равно (this | val).
BigInteger parallelMultiply(BigInteger val)
Возвращает BigInteger, значение которого равно (this * val).
BigInteger pow(int exponent)
Возвращает BigInteger, значение которого равно (thisexponent).
static BigInteger probablePrime(int bitLength, Random rnd)
Возвращает положительный BigInteger, который, вероятно, является простым, с заданной bitLength.
BigInteger remainder(BigInteger val)
Возвращает BigInteger, значение которого равно (this % val).
BigInteger setBit(int n)
Возвращает BigInteger, значение которого эквивалентно этому BigInteger с установленным указанным битом.
BigInteger shiftLeft(int n)
Возвращает BigInteger, значение которого равно (this << n).
BigInteger shiftRight(int n)
Возвращает BigInteger, значение которого равно (this >> n).
short shortValueExact()
Преобразует этот BigInteger в short, проверяя потерю информации.
int signum()
Возвращает функцию signum для этого BigInteger.
BigInteger sqrt()
Возвращает целую квадратную корень из этого BigInteger.
BigInteger[] sqrtAndRemainder()
Возвращает массив из двух BigInteger, содержащий целую квадратную корень s из this и его остаток this - s*s, соответственно.
BigInteger subtract(BigInteger val)
Возвращает BigInteger, значение которого равно (this - val).
boolean testBit(int n)
Возвращает true тогда и только тогда, когда указанный бит установлен.
byte[] toByteArray()
Возвращает массив байтов, содержащий представление этого BigInteger в дополнении до двух.
String toString()
Возвращает строковое представление этого BigInteger в десятичной системе.
String toString(int radix)
Возвращает строковое представление этого BigInteger в заданной системе счисления.
static BigInteger valueOf(long val)
Возвращает BigInteger, значение которого равно значению указанного long.
BigInteger xor(BigInteger val)
Возвращает BigInteger, значение которого равно (this ^ val).

Методы, объявленные в классе java.lang.Number

byteValue, shortValue

Методы, объявленные в классе java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Подробное описание полей

ZERO

public static final BigInteger ZERO
Константа BigInteger равна нулю.
С:
1.2

ONE

public static final BigInteger ONE
Константа BigInteger равна единице.
С:
1.2

TWO

public static final BigInteger TWO
Константа BigInteger равна двум.
С:
9

TEN

public static final BigInteger TEN
Константа BigInteger равна десяти.
С:
1.5

Подробное описание конструкторов

BigInteger

public BigInteger(byte[] val, int off, int len)
Преобразует подмассив байтов, содержащий двоичное представление BigInteger в дополнении до двух, в BigInteger. Подмассив задаётся смещением в массиве и длиной. Предполагается, что подмассив находится в big-endian формате: самый значимый байт находится по индексу off. Массив val предполагается неизменным на протяжении вызова конструктора. Бросает IndexOutOfBoundsException, если длина массива val равна нулю и либо off отрицательно, либо len отрицательно, либо off+len больше длины val.
Параметры:
val - массив байтов, содержащий подмассив, являющийся двоичным представлением BigInteger в дополнении до двух в формате big-endian.
off - начальное смещение двоичного представления.
len - количество байтов для использования.
Исключения:
NumberFormatException - val имеет нулевую длину.
IndexOutOfBoundsException - если предоставленные смещение и длина массива вызовут отрицательный или равный или больший, чем длина массива, индекс.
С:
9

BigInteger

public BigInteger(byte[] val)
Преобразует массив байтов, содержащий двоичное представление BigInteger в дополнении до двух, в BigInteger. Входной массив предполагается в big-endian формате: самый значимый байт находится в нулевом элементе. Массив val предполагается неизменным на протяжении вызова конструктора.
Параметры:
val - двоичное представление BigInteger в дополнении до двух в формате big-endian.
Исключения:
NumberFormatException - val имеет нулевую длину.

BigInteger

public BigInteger(int signum, byte[] magnitude, int off, int len)
Преобразует представление BigInteger в формате знак-величина в BigInteger. Знак представлен целочисленным значением signum: -1 для отрицательного, 0 для нуля или 1 для положительного. Величина — это подмассив массива байтов в big-endian формате: самый значимый байт находится по индексу off. Нулевая длина len допустима и приведёт к значению BigInteger 0, независимо от знака signum (-1, 0 или 1). Массив magnitude предполагается неизменным на протяжении вызова конструктора. Бросает IndexOutOfBoundsException, если длина массива magnitude не равна нулю и либо off отрицательно, либо len отрицательно, либо off+len больше длины magnitude.
Параметры:
signum - signum числа (-1 для отрицательного, 0 для нуля, 1 для положительного).
magnitude - big-endian двоичное представление абсолютного значения числа.
off - начальное смещение двоичного представления.
len - количество байтов для использования.
Исключения:
NumberFormatException - signum не равно одному из трёх допустимых значений (-1, 0 и 1) или signum равно 0 и magnitude содержит один или несколько ненулевых байтов.
IndexOutOfBoundsException - если предоставленные смещение и длина массива вызовут отрицательный или равный или больший, чем длина массива, индекс.
С:
9

BigInteger

public BigInteger(int signum, byte[] magnitude)
Преобразует представление BigInteger в формате знак-величина в BigInteger. Знак представлен целочисленным значением signum: -1 для отрицательного, 0 для нуля или 1 для положительного. Величина — это массив байтов в big-endian формате: самый значимый байт находится в нулевом элементе. Нулевой массив величины допустим и приведёт к значению BigInteger 0, независимо от signum (-1, 0 или 1). Массив magnitude предполагается неизменным на протяжении вызова конструктора.
Параметры:
signum - signum числа (-1 для отрицательного, 0 для нуля, 1 для положительного).
magnitude - big-endian двоичное представление величины числа.
Исключения:
NumberFormatException - signum не равно одному из трёх допустимых значений (-1, 0 и 1) или signum равно 0 и magnitude содержит один или несколько ненулевых байтов.

BigInteger

public BigInteger(String val, int radix)
Преобразует строковое представление BigInteger в указанном радиксе в BigInteger. Строковое представление состоит из необязательного знака минус или плюс, за которым следует последовательность одного или более цифр в указанном радиксе. Сопоставление символов с цифрами предоставлено в Character.digit. Строка не должна содержать лишних символов (например, пробелов).
Параметры:
val - строковое представление BigInteger.
radix - радикс, используемый при интерпретации val.
Исключения:
NumberFormatException - val не является корректным представлением BigInteger в указанном радиксе или radix находится вне диапазона от Character.MIN_RADIX до Character.MAX_RADIX включительно.

BigInteger

public BigInteger(String val)
Преобразует десятичное строковое представление BigInteger в BigInteger. Строковое представление состоит из необязательного знака минус или плюс, за которым следует последовательность одной или более десятичных цифр. Сопоставление символов с цифрами предоставлено в Character.digit. Строка не должна содержать лишних символов (например, пробелов).
Параметры:
val - десятичное строковое представление BigInteger.
Исключения:
NumberFormatException - val не является корректным представлением BigInteger.

BigInteger

public BigInteger(int numBits, Random rnd)
Конструирует случайный BigInteger, равномерно распределённый в диапазоне от 0 до (2numBits - 1) включительно. Равномерность распределения предполагает, что в rnd предоставляется честный источник случайных битов. Обратите внимание, что этот конструктор всегда создаёт неотрицательный BigInteger.
Параметры:
numBits - максимальная bitLength нового BigInteger.
rnd - источник случайности, используемый для вычисления нового BigInteger.
Исключения:
IllegalArgumentException - numBits отрицательно.
См. также:
  • bitLength()

BigInteger

public BigInteger(int bitLength, int certainty, Random rnd)
Конструирует случайный положительный BigInteger, который, вероятно, является простым, с заданной bitLength.
Примечание API:
Рекомендуется использовать метод probablePrime вместо этого конструктора, если нет веской причины для указания certainty.
Параметры:
bitLength - bitLength возвращаемого BigInteger.
certainty - мера неопределённости, которую вызывающий код готов принять. Вероятность того, что новый BigInteger представляет собой простое число, будет больше (1 - 1/2certainty). Время выполнения этого конструктора пропорционально значению этого параметра.
rnd - источник случайных битов, используемых для выбора кандидатов, которые будут проверены на простоту.
Исключения:
ArithmeticException - bitLength < 2 или bitLength слишком велики.
См. также:
  • bitLength()

Подробное описание методов

probablePrime

public static BigInteger probablePrime(int bitLength, Random rnd)
Возвращает положительное целое число BigInteger, которое, вероятно, является простым, со заданной длиной в битах. Вероятность того, что BigInteger, возвращаемый этим методом, является составным, не превышает 2-100.
Parameters:
bitLength - длина в битах возвращаемого BigInteger.
rnd - источник случайных битов, используемых для выбора кандидатов, которые будут проверяться на простоту.
Returns:
BigInteger с bitLength битами, который, вероятно, является простым
Throws:
ArithmeticException - bitLength < 2 или bitLength слишком велики.
Since:
1.4
See Also:
  • bitLength()

nextProbablePrime

public BigInteger nextProbablePrime()
Возвращает первое целое число, большее этого BigInteger, которое, вероятно, является простым. Вероятность того, что число, возвращаемое этим методом, является составным, не превышает 2-100. Этот метод никогда не пропустит простое число при поиске: если он возвращает p, то нет простого числа q такого, что this < q < p.
Implementation Note:
Из-за особенностей базового алгоритма и в зависимости от размера this, этот метод может потребовать значительного объёма памяти, до исчерпания доступного пространства кучи, или может выполняться длительное время.
Returns:
первое целое число, большее этого BigInteger, которое, вероятно, является простым.
Throws:
ArithmeticException - this < 0 или this слишком велики.
Since:
1.5

valueOf

public static BigInteger valueOf(long val)
Возвращает BigInteger, значение которого равно указанному long.
API Note:
Этот статический фабричный метод предоставляется в приоритете перед (long) конструктором, потому что он позволяет повторно использовать часто используемые BigInteger.
Parameters:
val - значение возвращаемого BigInteger.
Returns:
BigInteger с заданным значением.

add

public BigInteger add(BigInteger val)
Возвращает BigInteger, значение которого равно (this + val).
Parameters:
val - значение, которое нужно добавить к этому BigInteger.
Returns:
this + val

subtract

public BigInteger subtract(BigInteger val)
Возвращает BigInteger, значение которого равно (this - val).
Parameters:
val - значение, которое нужно вычесть из этого BigInteger.
Returns:
this - val

multiply

public BigInteger multiply(BigInteger val)
Возвращает BigInteger, значение которого равно (this * val).
Implementation Note:
Реализация может предложить лучшую алгоритмическую производительность, когда val == this.
Parameters:
val - значение, которое нужно умножить на этот BigInteger.
Returns:
this * val

parallelMultiply

public BigInteger parallelMultiply(BigInteger val)
Возвращает BigInteger, значение которого равно (this * val). Когда оба this и val велики, обычно в тысячах битов, параллельное умножение может быть использовано. Этот метод возвращает точно такой же математический результат, как multiply(java.math.BigInteger).
Implementation Note:
Эта реализация может предложить лучшую алгоритмическую производительность, когда val == this., По сравнению с multiply(java.math.BigInteger), алгоритм параллельного умножения реализации обычно использует больше ресурсов процессора для более быстрого вычисления результата, и может делать это с небольшим увеличением потребления памяти.
Parameters:
val - значение, которое нужно умножить на этот BigInteger.
Returns:
this * val
Since:
19
See Also:
  • multiply(java.math.BigInteger)

divide

public BigInteger divide(BigInteger val)
Возвращает BigInteger, значение которого равно (this / val).
Parameters:
val - значение, на которое нужно разделить этот BigInteger.
Returns:
this / val
Throws:
ArithmeticException - если val равно нулю.

divideAndRemainder

public BigInteger[] divideAndRemainder(BigInteger val)
Возвращает массив из двух BigInteger, содержащий (this / val), за которым следует (this % val).
Parameters:
val - значение, на которое нужно разделить этот BigInteger и вычислить остаток.
Returns:
массив из двух BigInteger: частное (this / val) — это начальный элемент, а остаток (this % val) — это конечный элемент.
Throws:
ArithmeticException - если val равно нулю.

remainder

public BigInteger remainder(BigInteger val)
Возвращает BigInteger, значение которого равно (this % val).
Parameters:
val - значение, на которое нужно разделить этот BigInteger и вычислить остаток.
Returns:
this % val
Throws:
ArithmeticException - если val равно нулю.

pow

public BigInteger pow(int exponent)
Возвращает BigInteger, значение которого равно (thisexponent). Обратите внимание, что exponent — это целое число, а не BigInteger.
Parameters:
exponent - показатель степени, до которого нужно возвести этот BigInteger.
Returns:
thisexponent
Throws:
ArithmeticException - exponent отрицательно. (Это привело бы к тому, что операция даст нецелое значение.)

sqrt

public BigInteger sqrt()
Возвращает целую квадратную корень этого BigInteger. Целая квадратная корень соответствующего математического целого числа n является наибольшим математическим целым числом s, таким что s*s <= n. Она равна значению floor(sqrt(n)), где sqrt(n) обозначает действительный квадратный корень из n, рассматриваемого как действительное. Обратите внимание, что целая квадратная корень будет меньше действительного квадратного корня, если последний не может быть представлен как целое значение.
Returns:
целая квадратная корень из this
Throws:
ArithmeticException - если this отрицательно. (Квадратный корень из отрицательного целого числа val — это (i * sqrt(-val)), где i — мнимая единица и равно sqrt(-1).)
Since:
9

sqrtAndRemainder

public BigInteger[] sqrtAndRemainder()
Возвращает массив из двух BigInteger, содержащий целую квадратную корень s из this и её остаток this - s*s соответственно.
Returns:
массив из двух BigInteger с целой квадратной коренью в смещении 0 и остатком в смещении 1
Throws:
ArithmeticException - если this отрицательно. (Квадратный корень из отрицательного целого числа val — это (i * sqrt(-val)), где i — мнимая единица и равно sqrt(-1).)
Since:
9
See Also:
  • sqrt()

gcd

public BigInteger gcd(BigInteger val)
Возвращает BigInteger, значение которого равно наибольшему общему делителю abs(this) и abs(val). Возвращает 0, если this == 0 && val == 0.
Parameters:
val - значение, с которым нужно вычислить НОД.
Returns:
GCD(abs(this), abs(val))

abs

public BigInteger abs()
Возвращает BigInteger, значение которого равно абсолютному значению этого BigInteger.
Returns:
abs(this)

negate

public BigInteger negate()
Возвращает BigInteger, значение которого равно (-this).
Returns:
-this

signum

public int signum()
Возвращает функцию signum этого BigInteger.
Returns:
-1, 0 или 1, в зависимости от того, является ли значение этого BigInteger отрицательным, нулевым или положительным.

mod

public BigInteger mod(BigInteger m)
Возвращает BigInteger, значение которого равно (this mod m). Этот метод отличается от remainder тем, что он всегда возвращает неотрицательный BigInteger.
Параметры:
m - модуль.
Возвращает:
this mod m
Исключения:
ArithmeticException - m ≤ 0
См. также:
  • remainder(java.math.BigInteger)

modPow

public BigInteger modPow(BigInteger exponent, BigInteger m)
Возвращает BigInteger, значение которого равно (thisexponent mod m). (В отличие от pow, этот метод допускает отрицательные показатели степени.)
Параметры:
exponent - показатель степени.
m - модуль.
Возвращает:
thisexponent mod m
Исключения:
ArithmeticException - m ≤ 0 или показатель степени отрицательный, и этот BigInteger не взаимно прост с m.
См. также:
  • modInverse(java.math.BigInteger)

modInverse

public BigInteger modInverse(BigInteger m)
Возвращает BigInteger, значение которого равно (this-1 mod m).
Параметры:
m - модуль.
Возвращает:
this-1 mod m.
Исключения:
ArithmeticException - m ≤ 0, или этот BigInteger не имеет мультипликативного обратного по модулю m (то есть, этот BigInteger не взаимно прост с m).

shiftLeft

public BigInteger shiftLeft(int n)
Возвращает BigInteger, значение которого равно (this << n). Расстояние сдвига, n, может быть отрицательным, в этом случае этот метод выполняет сдвиг вправо. (Вычисляет floor(this * 2n).)
Параметры:
n - расстояние сдвига, в битах.
Возвращает:
this << n
См. также:
  • shiftRight(int)

shiftRight

public BigInteger shiftRight(int n)
Возвращает BigInteger, значение которого равно (this >> n). Выполняется расширение знака. Расстояние сдвига, n, может быть отрицательным, в этом случае этот метод выполняет сдвиг влево. (Вычисляет floor(this / 2n).)
Параметры:
n - расстояние сдвига, в битах.
Возвращает:
this >> n
См. также:
  • shiftLeft(int)

and

public BigInteger and(BigInteger val)
Возвращает BigInteger, значение которого равно (this & val). (Этот метод возвращает отрицательный BigInteger тогда и только тогда, когда this и val оба отрицательны.)
Параметры:
val - значение, которое нужно выполнить операцию AND с этим BigInteger.
Возвращает:
this & val

or

public BigInteger or(BigInteger val)
Возвращает BigInteger, значение которого равно (this | val). (Этот метод возвращает отрицательный BigInteger тогда и только тогда, когда this или val отрицательны.)
Параметры:
val - значение, которое нужно выполнить операцию OR с этим BigInteger.
Возвращает:
this | val

xor

public BigInteger xor(BigInteger val)
Возвращает BigInteger, значение которого равно (this ^ val). (Этот метод возвращает отрицательный BigInteger тогда и только тогда, когда ровно один из this и val отрицателен.)
Параметры:
val - значение, которое нужно выполнить операцию XOR с этим BigInteger.
Возвращает:
this ^ val

not

public BigInteger not()
Возвращает BigInteger, значение которого равно (~this). (Этот метод возвращает отрицательное значение тогда и только тогда, когда этот BigInteger неотрицателен.)
Возвращает:
~this

andNot

public BigInteger andNot(BigInteger val)
Возвращает BigInteger, значение которого равно (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)
Возвращает BigInteger, значение которого эквивалентно этому BigInteger с установленным указанным битом. (Вычисляет (this | (1<<n)).)
Параметры:
n - индекс бита для установки.
Возвращает:
this | (1<<n)
Исключения:
ArithmeticException - n отрицателен.

clearBit

public BigInteger clearBit(int n)
Возвращает BigInteger, значение которого эквивалентно этому BigInteger с очищенным указанным битом. (Вычисляет (this & ~(1<<n)).)
Параметры:
n - индекс бита для очистки.
Возвращает:
this & ~(1<<n)
Исключения:
ArithmeticException - n отрицателен.

flipBit

public BigInteger flipBit(int n)
Возвращает BigInteger, значение которого эквивалентно этому BigInteger с инвертированным указанным битом. (Вычисляет (this ^ (1<<n)).)
Параметры:
n - индекс бита для инвертирования.
Возвращает:
this ^ (1<<n)
Исключения:
ArithmeticException - n отрицателен.

getLowestSetBit

public int getLowestSetBit()
Возвращает индекс самого правого (низшего порядка) единичного бита в этом BigInteger (количество нулевых битов справа от самого правого единичного бита). Возвращает -1, если этот BigInteger не содержит единичных битов. (Вычисляет (this == 0? -1 : log2(this & -this)).)
Возвращает:
индекс самого правого единичного бита в этом BigInteger.

bitLength

public int bitLength()
Возвращает количество битов в минимальном представлении этого BigInteger в дополнительном коде, исключая знак. Для положительных BigIntegers это эквивалентно количеству битов в обычном двоичном представлении. Для нуля этот метод возвращает 0. (Вычисляет (ceil(log2(this < 0 ? -this : this+1))).)
Возвращает:
количество битов в минимальном представлении этого BigInteger в дополнительном коде, исключая знак.

bitCount

public int bitCount()
Возвращает количество битов в представлении этого BigInteger в дополнительном коде, которые отличаются от его знака. Этот метод полезен при реализации множеств в стиле битовых векторов поверх BigIntegers.
Возвращает:
количество битов в представлении этого 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)
Сравнивает этот BigInteger с указанным BigInteger. Этот метод предоставляется вместо отдельных методов для каждого из шести логических операторов сравнения (<, ==, >, >=, !=, <=). Предлагаемый способ выполнения этих сравнений: (x.compareTo(y) <op> 0), где <op> — один из шести операторов сравнения.
Определено в:
compareTo в интерфейсе Comparable<BigInteger>
Параметры:
val — BigInteger, с которым должен быть сравнен этот BigInteger.
Возвращает:
-1, 0 или 1, если этот BigInteger численно меньше, равен или больше val.

equals

public boolean equals(Object x)
Сравнивает этот BigInteger с указанным объектом на предмет равенства.
Переопределяет:
equals в классе Object
Параметры:
x — Объект, с которым должен быть сравнен этот BigInteger.
Возвращает:
true тогда и только тогда, когда указанный объект является BigInteger, значение которого численно равно этому BigInteger.
См. также:
  • Object.hashCode()
  • HashMap

min

public BigInteger min(BigInteger val)
Возвращает минимальное значение из этого BigInteger и val.
Параметры:
val — значение, с которым вычисляется минимум.
Возвращает:
BigInteger, значение которого является меньшим из этого BigInteger и val. Если они равны, может быть возвращено любое из них.

max

public BigInteger max(BigInteger val)
Возвращает максимальное значение из этого BigInteger и val.
Параметры:
val — значение, с которым вычисляется максимум.
Возвращает:
BigInteger, значение которого является большим из этого и val. Если они равны, может быть возвращено любое из них.

hashCode

public int hashCode()
Возвращает код хэша для этого BigInteger.
Переопределяет:
hashCode в классе Object
Возвращает:
код хэша для этого BigInteger
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

toString

public String toString(int radix)
Возвращает строковое представление этого BigInteger в заданном радисе. Если радис находится вне диапазона от Character.MIN_RADIX до Character.MAX_RADIX включительно, он по умолчанию будет равен 10 (как в случае с Integer.toString). Используется отображение цифр в символы, предоставленное Character.forDigit, и, при необходимости, добавляется знак минус. (Это представление совместимо с конструктором (String, int).)
Параметры:
radix — радис строкового представления.
Возвращает:
строковое представление этого BigInteger в заданном радисе.
См. также:
  • Integer.toString(int, int)
  • Character.forDigit(int, int)
  • BigInteger(java.lang.String, int)

toString

public String toString()
Возвращает десятичное строковое представление этого BigInteger. Используется отображение цифр в символы, предоставленное Character.forDigit, и, при необходимости, добавляется знак минус. (Это представление совместимо с конструктором (String) и позволяет использовать оператор конкатенации строк Java +.)
Переопределяет:
toString в классе Object
Возвращает:
десятичное строковое представление этого BigInteger.
См. также:
  • Character.forDigit(int, int)
  • BigInteger(java.lang.String)

toByteArray

public byte[] toByteArray()
Возвращает массив байтов, содержащий представление этого BigInteger в дополнительном коде. Массив байтов будет в формате big-endian: наиболее значимый байт находится в нулевом элементе. Массив будет содержать минимальное количество байтов, необходимое для представления этого BigInteger, включая по крайней мере один знаковый бит, который равен (ceil((this.bitLength() + 1)/8)). (Это представление совместимо с конструктором (byte[]).)
Возвращает:
массив байтов, содержащий представление этого BigInteger в дополнительном коде.
См. также:
  • BigInteger(byte[])

intValue

public int intValue()
Преобразует этот BigInteger в целое число типа int. Это преобразование аналогично узкому примитивному преобразованию от long к int, как определено в Спецификации языка Java: если этот BigInteger слишком велик для целого числа типа int, возвращаются только младшие 32 бита. Обратите внимание, что при этом преобразовании может потеряться информация о величине значения BigInteger, а также может быть возвращён результат с противоположным знаком.
Определено в:
intValue в классе Number
Возвращает:
этот BigInteger, преобразованный в целое число типа int.
См. Спецификацию языка Java:
5.1.3 Узкое примитивное преобразование
См. также:
  • intValueExact()

longValue

public long longValue()
Преобразует этот BigInteger в длинное целое число типа long. Это преобразование аналогично узкому примитивному преобразованию от long к int, как определено в Спецификации языка Java: если этот BigInteger слишком велик для длинного целого числа типа long, возвращаются только младшие 64 бита. Обратите внимание, что при этом преобразовании может потеряться информация о величине значения BigInteger, а также может быть возвращён результат с противоположным знаком.
Определено в:
longValue в классе Number
Возвращает:
этот BigInteger, преобразованный в длинное целое число типа long.
См. Спецификацию языка Java:
5.1.3 Узкое примитивное преобразование
См. также:
  • longValueExact()

floatValue

public float floatValue()
Преобразует этот BigInteger в число с плавающей точкой типа 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()
Преобразует этот BigInteger в число с плавающей точкой двойной точности типа 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
См. также:
  • longValue()

intValueExact

public int intValueExact()
Преобразует этот BigInteger в int, проверяя наличие потерь информации. Если значение этого BigInteger выходит за пределы диапазона типа int, выбрасывается исключение ArithmeticException.
Возвращает:
Этот BigInteger, преобразованный в int.
Использует:
ArithmeticException - если значение this не помещается точно в int.
С:
1.8
См. также:
  • intValue()

shortValueExact

public short shortValueExact()
Преобразует этот BigInteger в short, проверяя наличие потерь информации. Если значение этого BigInteger выходит за пределы диапазона типа short, выбрасывается исключение ArithmeticException.
Возвращает:
Этот BigInteger, преобразованный в short.
Использует:
ArithmeticException - если значение this не помещается точно в short.
С:
1.8
См. также:
  • Number.shortValue()

byteValueExact

public byte byteValueExact()
Преобразует этот BigInteger в byte, проверяя наличие потерь информации. Если значение этого BigInteger выходит за пределы диапазона типа byte, выбрасывается исключение ArithmeticException.
Возвращает:
Этот BigInteger, преобразованный в byte.
Использует:
ArithmeticException - если значение this не помещается точно в byte.
С:
1.8
См. также:
  • Number.byteValue()

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/math/BigInteger.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API