Ce este o clasă BigInteger?
Există unele tipuri de date primitive în Java care sunt folosite, cum ar fi int sau long, pentru a efectua operații cu numere întregi. Cu toate acestea, uneori trebuie să stocăm numere mari în afara domeniului de aplicare a unor astfel de tipuri de date primitive. BigInteger Class este folosită pentru calcule matematice pentru numere foarte mari. Oferă toate metodele din pachetul java.lang.Math și analogi la toți operatorii întregi primitivi ai Java. BigIntegerClasa acoperă operațiuni pentru aritmetică modulară, manipulare de biți, calcul GCD și alte câteva operații. BigIntegers sunt reprezentați în notație cu complement a doi. Nu există o limită teoretică a cât de mare poate fi stocat un număr, deoarece memoria este alocată dinamic. Cu toate acestea, practic memoria este limitată și putem stoca un număr întreg care are numărul de biți mai mic sau egal cu Integer.MAX_VALUE . Aceasta oferă o limită superioară suficient de mare pentru a stoca aproape toate numerele mari.Cum este implementată clasa BigInteger?
import java.math.BigInteger;
Pentru a implementa clasa BigInteger în codul dvs., trebuie să importați pachetul java.math.BigInteger .
Declarație de clasă BigInteger
Clasa BigInteger în Java este declarată în felul următor în pachetul java.math :
public class BigInteger
extends Number
implements Comparable<BigInteger>
Clasa BigInteger extinde clasa Number și implementează o interfață Comparable . Este declarat și definit în pachetul java.math .
Constructori de clasă
Clasa BigInteger din Java are mulți constructori supraîncărcați. Puteți încerca să rulați fiecare în editor pentru a vedea cum funcționează.Sr# | Constructor | Descriere |
---|---|---|
1 | BigInteger(byte[] val) | Traduce o matrice de octeți într-un BigInteger . |
2 | BigInteger(int signum, byte[] magnitudine) | Traduce reprezentarea semnului-magnitudine într-un BigInteger . |
3 | BigInteger(int bitLength, int certitudine, Random rnd) | Construiește un BigInteger pozitiv generat aleatoriu de lungimea specificată. |
4 | BigInteger(Val șir) | Traduce reprezentarea șirului zecimal într-un BigInteger . |
5 | BigInteger(Val șir, radix int) | Convertește reprezentarea String din radixul specificat într-un BigInteger . |
Metode de clasă
Clasa BigInteger din Java are multe metode, dintre care unele sunt descrise mai jos. În tabel, „this” reprezintă BigInteger care apelează metoda și „ val ” este argumentul transmis metodei.abs() | Returnează valoarea absolută a lui „ acest ” BigInteger . |
adăuga() | Returnează un Biginteger calculând „ acest + val ”. |
scădea() | Returnează un Biginteger calculând „ acest - val ”. |
divide() | Returnează un Biginteger calculând „ this/val ”. |
multiplica() | Returnează un Biginteger calculând „ acest *val ”. |
valoarea() | Returnează o valoare BigInteger de lungă dată . |
este egal() | Compară egalitatea dintre „ acest ” BigInteger și un obiect dat. |
pow() | Returnează un Biginteger calculând „ acest exponent ”. |
min() | Returnează minimul dintre „ acest ” BigInteger și valoarea dată. |
max() | Returnează maximul dintre „ acest ” BigInteger și valoarea dată. |
mod() | Returnează o valoare pentru „ acest mod m ”. |
gcd() | Returnează un BigInteger care este cel mai mare divizor comun dintre valoarea absolută a lui „ this ” și „ valoarea transmisă ”. |
bitCount() | Returnează numărul de biți din reprezentarea în complement a doi a lui „ acest ” BigInteger . |
bitLength() | Returnează numărul de biți, excluzând bitul de semn, în reprezentarea minimă a complementului în doi a „ acest ” BigInteger . |
și() | Returnează un Biginteger calculând „ this & val ”. |
sau() | Returnează un Biginteger calculând „ acest | val '. |
nu() | Returnează un Biginteger calculând „ ~this”. |
si nu() | Returnează un Biginteger calculând „ this & ~val ”. |
intValue() | Convertește BigInteger într-un int . |
floatValue() | Convertește BigInteger în float . |
longValue() | Acesta convertește BigInteger în long . |
doubleValue() | Acesta convertește BigInteger în double . |
toString() | Returnează reprezentarea șirului zecimal al BigInteger . |
Exemplul 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));
}
}
Ieșire
15511210043330985984000000
Explicaţie
În fragmentul de mai sus, factorul unui număr mare este calculat folosind BigInteger Class prin importul pachetului java.math.BigInteger . Am creat o metodă calculateFactorial . Această metodă creează un BigInteger și apoi calculează factorialul folosind metoda de multiplicare f.multiply(BigInteger.valueOf(i)) .Exemplul 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);
}
}
Ieșire
60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 min valoare: 20 max valoare: 60
Explicaţie
În fragmentul de mai sus, am creat două BigInteger folosind constructorul BigInteger(String val) . Am aplicat diferite metode pe BigInteger s big1 și big2 cu valorile 20 și respectiv 60. Am aplicat următoarele metode:- big2.subtract(big1) pentru a scădea 20 din 60.
- big1.add(big2) pentru a adăuga 20 și 60.
- big1.multiply(big2) pentru a înmulți 20 și 60.
- big2.divide(big1) pentru a împărți 60 la 20.
- big1.min(big2) pentru a obține cea mai mică dintre cele două valori.
- big1.max(big2) pentru a obține cea mai mare dintre cele două valori.
GO TO FULL VERSION