Oc-windows.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Методы biginteger java

Класс BigInteger на Java

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

Например, факториал 100 содержит 158 цифр, поэтому мы не можем сохранить его в любом доступном примитивном типе данных. Мы можем хранить в нем столько целых чисел, сколько захотим. Нет теоретического ограничения на верхнюю границу диапазона, потому что память распределяется динамически, но практически, поскольку память ограничена, вы можете хранить число, в котором содержится число бит Integer.MAX_VALUE, которого должно быть достаточно для хранения в основном всех больших значений.

Ниже приведен пример Java-программы, которая использует BigInteger для вычисления Factorial.

// Java-программа для поиска больших факториалов с использованием BigInteger
import java.math.BigInteger;
import java.util.Scanner;

public class Example

// Возвращает Факториал Н

static BigInteger factorial( int N)

BigInteger f = new BigInteger( «1» ); // Или BigInteger.ONE

// Умножаем f на 2, 3, . N

for ( int i = 2; i

public static void main(String args[]) throws Exception

Если нам нужно написать вышеуказанную программу на C ++, это было бы слишком большим и сложным, мы можем взглянуть на Factorial of Large Number .
Таким образом, класс BigInteger очень удобен в использовании из-за его большой библиотеки методов, и он также широко используется в конкурентном программировании.

Ниже приведен список простых утверждений в примитивной арифметике и аналогичных им выражений в терминах объектов BigInteger.

декларация

Инициализация:

И для целых чисел, доступных как строка, вы можете инициализировать их как:

Некоторые константы также определены в классе BigInteger для простоты инициализации:

Другими подобными функциями являются subtract (), multiply (), div (), remainder ()
Но все эти функции принимают BigInteger в качестве аргумента, поэтому, если мы хотим, чтобы эти операции с целыми числами или строки преобразовывали их в BigInteger, прежде чем передавать их в функции, как показано ниже:

Извлечение значения из BigInteger:

На самом деле CompareTo возвращает -1 (меньше), 0 (равно), 1 (больше) в соответствии со значениями.

Для равенства мы также можем использовать:

Методы класса BigInteger:

  1. BigInteger abs () : этот метод возвращает BigInteger, значение которого является абсолютным значением этого BigInteger.
  2. BigInteger add (BigInteger val) : этот метод возвращает BigInteger со значением (this + val).
  3. BigInteger и (BigInteger val) : этот метод возвращает BigInteger со значением (this & val).
  4. BigInteger andNot (BigInteger val) : этот метод возвращает BigInteger, значение которого (this &

val).

  • int bitCount () : Этот метод возвращает количество бит в двоичном представлении этого BigInteger, которое отличается от его знакового бита.
  • int bitLength () : Этот метод возвращает число бит в минимальном представлении этого дополнения BigInteger с двумя дополнениями, исключая знаковый бит.
  • byte byteValueExact () : Этот метод преобразует этот BigInteger в байт, проверяя потерянную информацию.
  • BigInteger clearBit (int n) : этот метод возвращает BigInteger, значение которого эквивалентно этому BigInteger с очищенным назначенным битом.
  • int compareTo (BigInteger val) : этот метод сравнивает этот BigInteger с указанным BigInteger.
  • Разделение BigInteger (BigInteger val) : этот метод возвращает BigInteger, значение которого (this / val).
  • BigInteger [] divAndRemainder (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 в число с плавающей точкой.
  • BigInteger gcd (BigInteger val) : этот метод возвращает BigInteger, значение которого является наибольшим общим делителем abs (this) и abs (val).
  • int getLowestSetBit () : Этот метод возвращает индекс самого правого (самого младшего) одного бита в этом BigInteger (число нулевых бит справа от самого правого одного бита).
  • int hashCode () : этот метод возвращает хеш-код для этого BigInteger.
  • int intValue () : Этот метод преобразует этот BigInteger в int.
  • int intValueExact () : Этот метод преобразует этот BigInteger в int, проверяя потерянную информацию.
  • boolean isProbablePrime (int уверенность) : этот метод возвращает true, если этот BigInteger, вероятно, является простым, false, если он определенно составной.
  • long longValue () : Этот метод преобразует этот BigInteger в long.
  • long longValueExact () : Этот метод преобразует этот BigInteger в long, проверяя потерянную информацию.
  • BigInteger max (BigInteger val) : этот метод возвращает максимум этого BigInteger и val.
  • BigInteger min (BigInteger val ) : этот метод возвращает минимум этого BigInteger и val.
  • Мод BigInteger (BigInteger m) : этот метод возвращает BigInteger, значение которого (этот мод m).
  • BigInteger modInverse (BigInteger m) : этот метод возвращает BigInteger, значение которого (this-1 mod m).
  • BigInteger modPow (показатель BigInteger, 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 или (BigInteger val) : этот метод возвращает BigInteger со значением (this | val).
  • BigInteger pow (int exponent) : этот метод возвращает BigInteger, значение которого (thisexponent).
  • s tatic BigInteger probablePrime (int bitLength, Random rnd) : этот метод возвращает положительный BigInteger, который, вероятно, является простым, с указанным bitLength.
  • BigInteger remainder (BigInteger val) : этот метод возвращает BigInteger, значение которого (это% val).
  • BigInteger setBit (int n) : этот метод возвращает BigInteger, значение которого эквивалентно этому BigInteger с установленным назначенным битом.
  • BigInteger shiftLeft (int n) : этот метод возвращает BigInteger, значение которого (это > n).
  • short shortValueExact () : Этот метод преобразует этот BigInteger в short, проверяя потерянную информацию.
  • int signum () : этот метод возвращает функцию signum этого BigInteger.
  • BigInteger sqrt () : этот метод возвращает целочисленный квадратный корень этого BigInteger.
  • BigInteger [] sqrtAndRemainder () : этот метод возвращает массив из двух BigInteger, содержащий целочисленный квадратный корень s из этого и его остаток 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).
  • SPOJ Проблемы:
    Таким образом, после вышеупомянутого знания функции класса BigInteger, мы можем легко решить многие сложные проблемы, но помните, что класс BigInteger для обработки внутренне использует массив целых чисел, операция над объектом BigIntegers выполняется не так быстро, как над примитивами, что является функцией добавления в BigIntgers. не требует постоянного времени, это занимает время, пропорциональное длине BigInteger, поэтому сложность программы будет меняться соответственно. Ниже приведены проблемы SPOJ, чтобы понять BigIntegers.

    Эта статья предоставлена Уткаршем Триведи. Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

    n0tb0dy / BigInteger > Created Jan 29, 2016

    import static pro.java.util.Print.println ;
    import java.math.BigInteger ;
    import java.util.Random ;
    public class BigIntegerClass <
    public static void main ( String [] args ) <
    // Примеры работы с BigInteger
    // создали BigInteger из строки представляющей число
    BigInteger bi1 = new BigInteger ( » 987654321 » );
    println( » bi1 = » + bi1);
    BigInteger bi2 = new BigInteger ( » -123456789 » );
    println( » bi2 = » + bi2);
    // создали BigInteger из строки представляющей двоичное число
    BigInteger bi3 = new BigInteger ( » 101 » , 2 );
    println( » bi3 = » + bi3);
    // Отрицательное значение заданное массивом byte
    byte [] bytes = new byte [] < ( byte ) 0xFF , 0x00 , 0x00 >; // -65536
    BigInteger bi4 = new BigInteger (bytes);
    println( » bi4 = » + bi4);
    // Положительное значение заданное массивом byte
    bytes = new byte [] < 0x1 , 0x00 , 0x00 >; // 65536
    BigInteger bi5 = new BigInteger (bytes);
    println( » bi5 = » + bi5);
    // Задаем знак для BigInteger создаваемого из массива byte
    byte [] barSign = < 5 , 7 >; // 1287
    BigInteger bi6 = new BigInteger (barSign);
    println( » bi6 = » + bi6);
    println( » BigInteger(-1,barSign) = » + new BigInteger ( — 1 , barSign));
    // Генерируем случайное число BitInteger
    int bitLength = 8 ; // 8 bits (диапазон от 0 до 255)
    Random rnd = new Random ();
    int certainty = 5 ; // 1 — 1/2(5) certainty
    BigInteger birnd1 = new BigInteger (bitLength, certainty, rnd);
    BigInteger birnd2 = new BigInteger (bitLength, rnd);
    println( » birnd1 = » + birnd1);
    println( » birnd2 = » + birnd2);
    // Создаем BigInteger из целочисленного литерала
    BigInteger bi7 = BigInteger . valueOf( 42 );
    println( » bi7 = » + bi7);
    println( » BigInteger.ONE = » + BigInteger . ONE );
    println( » BigInteger.TEN = » + BigInteger . TEN );
    println( » BigInteger.ZERO = » + BigInteger . ZERO );
    // Примеры арифметических операций с BigInteger
    println( » bi1+bi2 = » + (bi1 . add(bi2))); // +
    println( » bi1 = » + bi1 + » bi2 = » + bi2);
    BigInteger bi8 = bi5 . subtract(bi3); // —
    println( » bi8 = » + bi8);
    println( » bi3*bi7 = » + (bi3 . multiply(bi7))); // *
    println( » bi5/10 = » + (bi5 . div >BigInteger . TEN ))); // /
    >
    >
    • © 2020 GitHub, Inc.
    • Terms
    • Privacy
    • Security
    • Status
    • Help

    You can’t perform that action at this time.

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

    BigInteger Java: работа с большими числами

    Язык Java в основном используется для написания больших корпоративных веб-приложений. Однако он также применим и других предметных областях, где довольно часто возникает необходимость в работе с очень большими числами. Хотя в Java имеются примитивные типы, бывают ситуации, где и их недостаточно.

    Известно, что у всех примитивов есть одна неприятная особенность – переполнение типа, при котором выход за пределы допустимых значений приводит к некорректным вычислениям. Для этого существует специальный класс BigInteger. Java не была бы Java, если бы в ней не было отдельного класса с функциональностью и для этого случая. Рассмотрим его подробнее.

    Класс BigInteger Java: описание

    Как вы уже поняли, класс BigInteger служит оболочкой для больших целочисленных значений. Чтобы инкапсулировать число в объект данного типа, можно использовать одну из перегрузок его конструкторов, либо статический метод valueOf. Конструктор в качестве аргумента может принимать строку либо массив байтов. Для преобразования простых типов, представляющих целые числа, в BigInteger Java используют статический метод valueOf.

    Поскольку в Java возможность перегрузки операторов отсутствует, для выполнения математических операций над инкапсулированными в данном классе значениями, предусмотрены соответствующие метода. О них далее и пойдет речь.

    Java BigInteger: методы и примеры их использования

    Данный класс имеет в своем арсенале множество методов, которые позволяют манипулировать числовыми значениями и производить над ними разнообразные математические операции. Ниже приведен список этих методов.

    Разберем методы, выполняющие арифметические операции:

    — add(value) – выполняет сложение значений текущего объекта, с переданным в качестве аргумента;

    — subtract(subtractor) – выполняет вычитание subtractor от текущего значения;

    — multiply(value) – выполняет умножение;

    — divide(divider) – выполняет деление текущего значения на divider;

    — pow(int arg) – возводит значение вызвавшего объекта в степень, величиной в arg;

    — abs() – возвращает абсолютное значение вызвавшего объекта;

    — negate() – возвращает объект BigInteger, значение которого имеет противоположный знак.

    Давайте разберем простой пример выполнения арифметической операции над двумя инкапсулированными в объект значениями:

    — BigInteger val1, val2, adding, dividing, oppositeSign;

    — val1 = new BigInteger(“5”);

    Обратите внимание на способ создание объектов. Переменная val1 инициализировалась при помощи конструктора, принявшего строку, и хранит значение 5. val2 имеет значение 10 в результате работы статического метода valueOf. Значение переменной adding это результат сложение первых двух переменных и равно 15. Переменная dividing соответственно хранит результат вычитания. oppositeSign равен значению val1 с противоположным знаком, т. е. -5.

    Заключение

    Как видите, класс BigInteger Java предоставляет различные инструменты для операций над очень большими числами. При этом переполнение типов исключено, так как безопасность в Java имеет один из самых высоких приоритетов, естественно без ущерба функциональности.

    Руководство по классу Java Integer с примерами

    Класс Integer является контейнером для типа данных int . Этот класс включает в себя методы преобразования значений из строки в объект Integer . Данное руководство содержит полную информацию о том, как использовать класс Integer в Java , его атрибуты и методы .

    Синтаксис класса Integer

    Совместимость с версиями JDK

    Необходима JDK версии 1.0

    Основы класса Integer

    Поскольку класс Integer имеет широкую функциональность, мы решили разделить данное руководство на разделы.

    Как создать экземпляр класса Integer

    Есть два способа создать экземпляр класса Integer . Первый способ – использовать ключевое слово new :

    Второй способ создать — использовать функцию автоупаковки ( autoboxing ) языка Java , которая конвертирует примитивный тип данных в соответствующий класс-обёртку:

    Тест на равенство объектов Integer

    Объекты Integer являются обёрткой для примитивного типа int . Поскольку они являются объектами, то оператор == не будет работать. Рассмотрим приведенный ниже отрывок кода:

    Поскольку мы имеем дело с объектами Integer , оператор == больше не применим. Как же провести сравнение двух Java объектов Integer ? Рассмотрим приведенный ниже отрывок кода, демонстрирующий это:

    Java-программа для проверки объектов Integer на равенство

    Максимальное и минимальное значения Integer

    Чтобы найти максимальное и минимальное значения Integer , мы обратимся к двум его полям. Максимальное значение объекта Integer ( 2147483647 ) может быть найдено с помощью вызова Integer.MAX_VALUE , а минимальное значение Integer (- 2147483648 ) – через обращение к Integer.MIN_VALUE .

    Рассмотрим метод parseInt(String s) , который принимает строку в качестве аргумента и конвертирует её в объект Integer . Если мы передадим строковое значение, которое имеет целочисленный эквивалент, превышающее максимальное значение в Integer.MAX_VALUE ? Грубым примером такого сценария может служить приведенный ниже код:

    Мы передали в метод parseInt аргумент, который на 1 больше максимального значения. Поэтому если мы попытаемся выполнить этот отрывок кода, компилятор выдаст исключение NumberFormatException :

    Как использовать статичные методы класса Integer

    Большинство методов класса Integer статичные, поэтому имеет смысл разобраться, как получить доступ к ним. Не статичные методы используются так:

    Статические методы не должны использоваться таким образом, а должны вызываться так как показано ниже:

    Нестатические методы вызываются через переменная.метод. Статичные вызываются через Integer.метод(аргументы… ).

    Поля объекта Integer

    МодификаторТипАтрибутОписание
    staticIntMAX_VALUEКонстанта, являющаяся максимальным значением данных типа int, равная 2^31-1.
    staticIntMIN_VALUEКонстанта, являющаяся минимальным значением данных типа int, равная -2^31.
    staticIntSIZEЧисло битов, использованное для представления значения типа int в двоичной форме.
    staticClassTYPEЭкземпляр класса, представляющий примитивный тип int.

    Конструктор класса Integer

    СинтаксисОписание
    Integer(int value)Создает новый объект Integer, который представляет указанное целочисленное значение.
    Integer(String s)Это создает новый объект Integer, который представляет целочисленное значение, указанное строковым параметром конструктора.

    Примеры использования методов класса Integer

    МодификаторВозвращаемый типМетодОписание
    staticIntbitCount(int i)Этот метод возвращает целочисленное значение, которое соответствует количеству единиц в двоичном представлении числа-аргумента метода.
    bytebyteValue()Возвращает значение объекта Integer в виде типа byte. Этот метод переопределяет метод byteValue() класса Number.
    staticIntcompare(int x, int y)Метод просто возвращает целочисленное представление результата сравнения двух целочисленных аргументов.
    IntcompareTo(Integer anotherInteger)Возвращает целочисленное значение результата сравнения аргумента метода и объекта Integer.
    staticIntegerdecode(String nm)Возвращает декодированное значение строкового аргумента в объект Integer.
    DoubledoubleValue()Возвращает эквивалент объекта Integer типа double ( java double to integer ). Метод doubleValue() унаследован из класса Number.
    booleanequals(Object obj)Возвращает результат сравнения объекта Integer и объекта-аргумента типа Object. Этот метод переопределяет метод equals класса Object.
    FloatfloatValue()Возвращает эквивалент объекта Integer в типе float. Метод floatValue унаследован из класса Number.
    staticIntegergetInteger(String nm)Возвращает значение свойства, указанного в качестве аргумента, в объекте Integer.
    staticIntegergetInteger(String nm, int val)Определяет целочисленное значение свойства, указанного в строковом параметре. Если свойство не найдено, возвращает объект Integer со значением, указанным во втором параметре.
    staticIntegergetInteger(String nm, Integer val)Возвращает целочисленное значение свойства, указанного в строковом параметре. Если свойство не найдено, возвращает объект Integer, указанный во втором параметре.
    InthashCode()Возвращает хэш-код объекта Integer.
    staticInthighestOneBit(int i)Определяет позицию старшего бита. Возвращает значение, в котором установлен только этот бит. Если ни один из битов не установлен, возвращает 0.
    IntintValue()Возвращает целочисленный эквивалент объекта Integer. Метод унаследован из класса Number.
    LonglongValue()Возвращает значение объекта Integer как тип long.
    staticIntlowestOneBit(int i)Возвращает целое число, получающееся, если оставить только младшую (крайнюю правую) единицу в двоичном представлении числа-аргумента.
    staticIntnumberOfLeadingZeros(int i)Возвращает количества нулей слева в двоичном представлении числа-аргумента.
    staticIntnumberOfTrailingZeros(int i)Возвращает количества нулей справа в двоичном представлении числа-аргумента.
    staticIntparseInt(String s)Преобразует строку-аргумент в десятичное число со знаком.
    staticIntparseInt(String s, int radix)Преобразует строку-аргумент в целом число со знаком в системе исчисления, указанной во втором аргументе.
    staticIntreverse(int i)Возвращает число, получаемое в результате перестановки битов числа-аргумента в обратном порядке.
    staticIntreverseBytes(int i)Возвращает число, получаемое в результате перестановки байтов числа-аргумента в обратном порядке.
    staticIntrotateLeft(int i, int distance)Возвращает число, полученное в результате сдвига битов числа-аргумента на указанное количество позиций влево. (Биты, вышедшие за пределы слева, возвращаются в правую часть).
    staticIntrotateRight(int i, int distance)Возвращает число, полученное в результате сдвига битов числа-аргумента на указанное количество позиций вправо. (Биты, вышедшие за пределы справа, возвращаются в левую часть).
    ShortshortValue()Возвращает эквивалент объекта Integer в типе short. Этот метод переопределяет метод shortValue класса Number.
    staticintsignum(int i)Возвращает результат функции signum от указанного целого числа.
    staticStringtoBinaryString(int i)Возвращает строковый эквивалент двоичного представления числа-аргумента.
    staticStringtoHexString(int i)Возвращает строковое представление целочисленного аргумента в виде шестнадцатеричного числа без знака.
    staticStringtoOctalString(int i)Возвращает строковое представление целочисленного аргумента в виде восьмеричного числа без знака.
    StringtoString()Возвращает объект String, представляющий значение объекта Integer.
    staticStringtoString(int i)Возвращает объект String, представляющий значение целочисленного аргумента.
    staticStringtoString(int i, int radix)Возвращает строковый эквивалент целого десятичного числа-аргумента в указанной системе исчисления.
    staticIntegervalueOf(int i)Возвращает экземпляр объекта Integer, представляющий указанное целое число.
    staticIntegervalueOf(String s)Возвращает экземпляр объекта Integer, содержащий значение, указанное в строке-аргументе.
    staticIntegervalueOf(String s, int radix)Возвращает экземпляр объекта Integer, содержащий значение, передаваемое в строке-аргументе в системе исчисления, указанной во втором параметре.

    Данная публикация представляет собой перевод статьи « Java Integer Class Tutorial and Example » , подготовленной дружной командой проекта Интернет-технологии.ру

    Читать еще:  Javascript console write
    Ссылка на основную публикацию
    Adblock
    detector