Wat is een BigInteger-klasse?
Er zijn enkele primitieve gegevenstypen in Java die worden gebruikt, zoals int of long, om integer-bewerkingen uit te voeren. Soms moeten we echter grote aantallen opslaan buiten het bereik van dergelijke primitieve gegevenstypen. BigInteger Class wordt gebruikt voor wiskundige berekeningen voor zeer grote getallen. Het biedt alle methoden van het java.lang.Math- pakket en analogen voor alle primitieve integer-operators van Java. BigIntegerKlasse omvat bewerkingen voor modulair rekenen, bitmanipulatie, GCD-berekening en enkele andere bewerkingen. BigIntegers worden weergegeven in twee-complementnotatie. Er is geen theoretische limiet aan hoe groot een getal kan worden opgeslagen, omdat het geheugen dynamisch wordt toegewezen. Het geheugen is echter praktisch beperkt en we kunnen een geheel getal opslaan met een aantal bits dat kleiner is dan of gelijk is aan de Integer.MAX_VALUE . Dit levert een voldoende grote bovengrens op om vrijwel alle grote getallen op te slaan.Hoe wordt de BigInteger-klasse geïmplementeerd?
import java.math.BigInteger;
Om de BigInteger- klasse in uw code te implementeren, moet u het java.math.BigInteger- pakket importeren .
BigInteger-klasseverklaring
De klasse BigInteger in Java wordt op de volgende manier gedeclareerd in het pakket java.math :
public class BigInteger
extends Number
implements Comparable<BigInteger>
De klasse BigInteger breidt de klasse Number uit en implementeert een vergelijkbare interface. Het wordt gedeclareerd en gedefinieerd in het java.math- pakket.
Klasse constructeurs
De BigInteger- klasse van Java heeft veel overbelaste constructors. U kunt proberen ze allemaal in de editor uit te voeren om te zien hoe ze werken.Sr# | Constructeur | Beschrijving |
---|---|---|
1 | BigInteger(byte[] waarde) | Vertaalt een bytearray in een BigInteger . |
2 | BigInteger(int signum, byte[] grootte) | Vertaalt teken-magnitudeweergave in een BigInteger . |
3 | BigInteger(int bitLength, int zekerheid, Willekeurige rnd) | Construeert een willekeurig gegenereerde positieve BigInteger van de opgegeven lengte. |
4 | BigInteger(String waarde) | Vertaalt decimale tekenreeksrepresentatie in een BigInteger . |
5 | BigInteger(String val, int radix) | Converteert de tekenreeksrepresentatie in de opgegeven radix naar een BigInteger . |
Klasse methoden
De BigInteger- klasse van Java heeft veel methoden, waarvan er enkele hieronder worden beschreven. In de tabel staat 'this' voor de BigInteger die de methode aanroept en ' val ' is het argument dat aan de methode wordt doorgegeven.buikspieren() | Het retourneert de absolute waarde van ' deze ' BigInteger . |
toevoegen() | Het retourneert een Biginteger door ' this + val ' te berekenen. |
aftrekken() | Het geeft een Biginteger terug door ' this - val ' te berekenen. |
verdeling() | Het retourneert een Biginteger door ' this / val ' te berekenen. |
vermenigvuldigen() | Het retourneert een Biginteger door ' this * val ' te berekenen. |
waarde van() | Het retourneert een BigInteger- waarde van gegeven long . |
is gelijk aan () | Het vergelijkt de gelijkheid tussen ' deze ' BigInteger en een bepaald object. |
hoera() | Het geeft een Biginteger terug door ' dezeexponent ' te berekenen. |
minuten() | Het retourneert het minimum tussen ' deze ' BigInteger en de gegeven waarde. |
maximum() | Het retourneert het maximum tussen ' deze ' BigInteger en de gegeven waarde. |
mod() | Het retourneert een waarde voor ' deze mod m '. |
gcd() | Het retourneert een BigInteger dat de grootste gemene deler is tussen de absolute waarde van ' this ' en de ' doorgegeven waarde '. |
bitCount() | Het retourneert het aantal bits in de twee-complementrepresentatie van ' dit ' BigInteger . |
bitLengte() | Het retourneert het aantal bits, exclusief het tekenbit, in de minimale twee-complementweergave van ' dit ' BigInteger . |
En() | Het geeft een Biginteger terug door ' this & val ' te berekenen. |
of() | Het retourneert een Biginteger door ' this | val '. |
niet() | Het retourneert een Biginteger door ' ~this' te berekenen. |
en niet() | Het geeft een Biginteger terug door ' this & ~ val ' te berekenen. |
intWaarde() | Het converteert BigInteger naar een int . |
floatWaarde() | Het converteert BigInteger naar float . |
langeWaarde() | Het converteert BigInteger naar long . |
dubbeleWaarde() | Het converteert BigInteger naar double . |
naarString() | Het retourneert de decimale tekenreeksrepresentatie van BigInteger . |
voorbeeld 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));
}
}
Uitgang
15511210043330985984000000
Uitleg
In het bovenstaande fragment wordt de factor van een groot getal berekend met BigInteger Class door het java.math.BigInteger- pakket te importeren. We hebben een methodecalculFactorial gemaakt . Deze methode maakt een BigInteger en berekent vervolgens de faculteit met behulp van de vermenigvuldigingsmethode f.multiply(BigInteger.valueOf(i)) .Voorbeeld 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);
}
}
Uitgang
60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 min waarde: 20 max waarde: 60
Uitleg
In het fragment hierboven hebben we twee BigInteger s gemaakt met behulp van de BigInteger(String val) constructor. We hebben verschillende methoden toegepast op de Big1 en big2 van de BigInteger met respectievelijk de waarden 20 en 60. We hebben de volgende methodes toegepast:- big2.subtract(big1) om 20 van 60 af te trekken.
- big1.add(big2) om 20 en 60 op te tellen.
- big1.multiply(big2) om 20 en 60 te vermenigvuldigen.
- big2.divide(big1) om 60 te delen door 20.
- big1.min(big2) om de kleinste van de twee waarden te krijgen.
- big1.max(big2) om de grootste van de twee waarden te krijgen.
GO TO FULL VERSION