Vad är en BigInteger Class?
Det finns vissa primitiva datatyper i Java som används, till exempel int eller long, för att utföra heltalsoperationer. Men ibland behöver vi lagra stora antal utanför räckvidden för sådana primitiva datatyper. BigInteger Class används för matematiska beräkningar för mycket stora tal. Den tillhandahåller alla metoder från java.lang.Math- paketet och analoger till alla Javas primitiva heltalsoperatorer. Stort heltalKlass täcker operationer för modulär aritmetik, bitmanipulation, GCD-beräkning och några andra operationer. Stora heltal representeras i två-komplement-notation. Det finns ingen teoretisk gräns för hur stort antal som kan lagras eftersom minnet allokeras dynamiskt. Men praktiskt taget är minnet begränsat och vi kan lagra ett heltal som har antalet bitar mindre än eller lika med heltal.MAX_VALUE . Detta ger en tillräckligt stor övre gräns för att lagra praktiskt taget alla stora tal.Hur implementeras BigInteger Class?
import java.math.BigInteger;
För att implementera BigInteger- klassen i din kod måste du importera java.math.BigInteger -paketet.
BigInteger Class Declaration
Klassen BigInteger i Java deklareras på följande sätt i paketet java.math :public class BigInteger
extends Number
implements Comparable<BigInteger>
Klassen BigInteger utökar Number- klassen och implementerar ett Comparable -gränssnitt. Det deklareras och definieras i paketet java.math .
Klasskonstruktörer
Javas BigInteger Class har många överbelastade konstruktörer. Du kan försöka köra var och en i editorn för att se hur de fungerar.Sr# | Konstruktör | Beskrivning |
---|---|---|
1 | BigInteger(byte[] val) | Översätter en byte-array till ett BigInteger . |
2 | BigInteger(int signum, byte[] magnitud) | Översätter teckenstorleksrepresentation till ett BigInteger . |
3 | BigInteger(int bitLength, int säkerhet, Random rnd) | Konstruerar ett slumpmässigt genererat positivt BigInteger av angiven längd. |
4 | BigInteger(String Val) | Översätter representation av decimalsträngar till ett stort heltal . |
5 | BigInteger(String val, int radix) | Konverterar String -representationen i den angivna radixen till ett BigInteger . |
Klassmetoder
Javas BigInteger- klass har många metoder, av vilka några beskrivs nedan. I tabellen representerar 'detta' det BigInteger som anropar metoden och ' val ' är argumentet som skickas till metoden.magmuskler() | Den returnerar det absoluta värdet av " detta " BigInteger . |
Lägg till() | Den returnerar ett stort heltal genom att beräkna ' this + val '. |
subtrahera() | Den returnerar ett stort heltal genom att beräkna ' detta - värde '. |
dela upp() | Den returnerar ett stort heltal genom att beräkna ' detta / val '. |
multiplicera() | Den returnerar ett stort heltal genom att beräkna ' this * val '. |
värdet av() | Det returnerar ett BigInteger- värde av given long . |
lika() | Den jämför likheten mellan ' detta ' BigInteger och ett givet objekt. |
pow() | Den returnerar ett stort heltal genom att beräkna ' dennaexponent '. |
min() | Den returnerar minimum mellan ' detta ' BigInteger och det givna värdet. |
max() | Den returnerar maxvärdet mellan ' detta ' BigInteger och det givna värdet. |
mod() | Den returnerar ett värde för ' denna mod m '. |
gcd() | Det returnerar ett BigInteger som är den största gemensamma delaren mellan det absoluta värdet av ' detta ' och ' passerat värde ' . |
bitCount() | Den returnerar antalet bitar i tvåkomplementrepresentationen av ' detta ' BigInteger . |
bitLength() | Den returnerar antalet bitar, exklusive teckenbiten, i den minimala två-komplementrepresentationen av ' detta ' BigInteger . |
och() | Den returnerar ett stort heltal genom att beräkna ' detta & val '. |
eller() | Den returnerar ett stort heltal genom att beräkna ' detta | val '. |
inte() | Den returnerar ett stort heltal genom att beräkna ' ~detta'. |
och inte() | Den returnerar ett stort heltal genom att beräkna ' detta & ~val '. |
intValue() | Den konverterar BigInteger till en int . |
floatValue() | Den konverterar BigInteger till float . |
longValue() | Det konverterar BigInteger till long . |
doubleValue() | Det konverterar BigInteger till dubbelt . |
att stränga() | Den returnerar decimalsträngsrepresentationen av BigInteger . |
Exempel 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));
}
}
Produktion
155112100433330985984000000
Förklaring
I utdraget ovan beräknas faktorn för ett stort antal med hjälp av BigInteger Class genom att importera java.math.BigInteger -paketet. Vi har skapat en calculateFactorial -metod. Den här metoden skapar ett BigInteger och beräknar sedan faktortalet med hjälp av multiplikationsmetoden f.multiply(BigInteger.valueOf(i)) .Exempel 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);
}
}
Produktion
60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 min värde: 20 maxvärde: 60
Förklaring
I utdraget ovan har vi gjort två BigInteger med hjälp av BigInteger(String val) -konstruktorn. Vi tillämpade olika metoder på BigInteger s big1 och big2 med värdena 20 respektive 60. Vi tillämpade följande metoder:- big2.subtract(big1) för att subtrahera 20 från 60.
- big1.add(big2) för att lägga till 20 och 60.
- big1.multiply(big2) för att multiplicera 20 och 60.
- big2.divide(big1) för att dividera 60 med 20.
- big1.min(big2) för att få det minsta av de två värdena.
- big1.max(big2) för att få det största av de två värdena.