Какво е BigInteger клас?
В Java има някои примитивни типове данни , които се използват, като int or long, за извършване на операции с цели числа. Понякога обаче трябва да съхраняваме големи числа извън обхвата на такива примитивни типове данни. Класът BigInteger се използва за математически изчисления за много големи числа. Той предоставя всички методи от пакета java.lang.Math и аналози на всички примитивни целочислени оператори на Java. Голямо цяло числоКласът обхваща операции за модулна аритметика, битова манипулация, GCD изчисление и няколко други операции. Големите цели числа са представени в нотация с допълнение от две. Няма теоретично ограничение за това колко голямо число може да бъде съхранено, тъй като паметта се разпределя динамично. На практика обаче паметта е ограничена и можем да съхраним цяло число, което има брой битове по-малък or equals на Integer.MAX_VALUE . Това осигурява достатъчно голяма горна граница за съхраняване на почти всички големи числа.Как се внедрява класът BigInteger?
import java.math.BigInteger;
За да внедрите класа BigInteger във вашия code, трябва да импортирате пакет java.math.BigInteger .
Декларация на клас BigInteger
Класът BigInteger в Java е деклариран по следния начин в пакета java.math :
public class BigInteger
extends Number
implements Comparable<BigInteger>
Класът BigInteger разширява класа Number и имплементира Comparable интерфейс. Той е деклариран и дефиниран в пакета java.math .
Конструктори на класове
Класът BigInteger на Java има много претоварени конструктори. Можете да опитате да стартирате всеки в редактора, за да видите How работят.Sr# | Конструктор | Описание |
---|---|---|
1 | BigInteger(byte[] стойност) | Преобразува byteов масив в BigInteger . |
2 | BigInteger(int signum, byte[] величина) | Превежда представянето на знак-величина в BigInteger . |
3 | BigInteger(int bitLength, int сигурност, Random rnd) | Конструира произволно генерирано положително BigInteger с посочената дължина. |
4 | Голямо цяло число (низ стойност) | Преобразува представянето на десетичен низ в BigInteger . |
5 | BigInteger(String val, int radix) | Преобразува представянето на низ в посочения радикс в BigInteger . |
Методи на класа
Класът BigInteger на Java има много методи, някои от които са описани по-долу. В tableта 'this' представлява BigInteger , който извиква метода, а ' val ' е аргументът, предаден на метода.коремни мускули() | Връща абсолютната стойност на ' this ' BigInteger . |
добави () | Той връща Biginteger чрез изчисляване на ' this + val '. |
изваждане () | Той връща Biginteger чрез изчисляване на ' this - val '. |
разделям() | Той връща Biginteger чрез изчисляване на ' this / val '. |
умножение () | Той връща Biginteger чрез изчисляване на ' this * val '. |
стойност на() | Връща стойност на BigInteger от дадено дълго . |
равно на() | Той сравнява equalsството между „ това “ BigInteger и даден обект. |
pow() | Той връща Biginteger чрез изчисляване на ' thisexponent '. |
мин() | Връща минимума между ' this ' BigInteger и дадената стойност. |
макс () | Връща максимума между ' this ' BigInteger и дадената стойност. |
мод() | Връща стойност за „ този мод m “. |
gcd() | Връща голямо цяло число , което е най-големият общ делител между абсолютната стойност на „ това “ и „ предадената стойност “. |
bitCount() | Връща броя на битовете в представянето с допълнение от две на ' това ' BigInteger . |
bitLength() | Той връща броя на битовете, с изключение на бита за знака, в минималното представяне с допълнение от две на ' това ' BigInteger . |
и() | Той връща Biginteger чрез изчисляване на ' this & val '. |
or() | Той връща Biginteger , като изчислява ' this | val '. |
не() | Той връща Biginteger чрез изчисляване на „ ~this“. |
и не() | Той връща Biginteger чрез изчисляване на ' this & ~val '. |
intValue() | Той преобразува BigInteger в int . |
floatValue() | Той преобразува BigInteger в float . |
longValue() | Той преобразува BigInteger в long . |
двойна стойност () | Той преобразува BigInteger в double . |
toString() | Връща представянето на десетичен низ на BigInteger . |
Пример 1
import java.math.BigInteger;
public class Example1 {
static BigInteger calculateFactorial(int val) {
// Initialize result
BigInteger f = BigInteger.ONE; // Or new BigInteger("1")
// compute factorial
for (int i = 2; i <= val; i++) {
f = f.multiply(BigInteger.valueOf(i));
}
return f;
}
// Driver method
public static void main(String[] args) {
int val = 25;
System.out.println(calculateFactorial(val));
}
}
Изход
15511210043330985984000000
Обяснение
В горния фрагмент коефициентът на голямо число се изчислява с помощта на клас BigInteger чрез импортиране на пакет java.math.BigInteger . Създадохме метод CalculatorFactorial . Този метод създава BigInteger и след това изчислява факториела с помощта на метода за умножение f.multiply(BigInteger.valueOf(i)) .Пример 2
import java.math.BigInteger;
public class Example2 {
public static void main(String[] args) {
BigInteger big1 = new BigInteger("20");
BigInteger big2 = new BigInteger("60");
BigInteger sub = big2.subtract(big1);
System.out.println(big2 + " - " + big1 + " = " + sub);
BigInteger add = big1.add(big2);
System.out.println(big1 + " + " + big2 + " = " + add);
BigInteger mul = big1.multiply(big2);
System.out.println(big1 + " * " + big2 + " = " + mul);
BigInteger div = big2.divide(big1);
System.out.println(big2 + " / " + big1 + " = " + div);
BigInteger min = big1.min(big2);
System.out.println("min value: " + min);
BigInteger max = big1.max(big2);
System.out.println("max value: " + max);
}
}
Изход
60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 minutesи стойност: 20 максимална стойност: 60
Обяснение
Във фрагмента по-горе направихме две BigInteger с помощта на конструктора BigInteger(String val) . Приложихме различни методи към big1 и big2 на BigInteger със стойности съответно 20 и 60. Приложихме следните методи:- big2.subtract(big1) за изваждане на 20 от 60.
- big1.add(big2) , за да съберете 20 и 60.
- big1.multiply(big2) за умножение на 20 и 60.
- big2.divide(big1) за разделяне на 60 на 20.
- big1.min(big2) , за да получите по-малката от двете стойности.
- big1.max(big2) , за да получите по-голямата от двете стойности.
GO TO FULL VERSION