Was ist eine BigInteger-Klasse?
Es gibt einige primitive Datentypen in Java, die zum Ausführen von Ganzzahloperationen verwendet werden, z. B. int oder long. Manchmal müssen wir jedoch große Zahlen außerhalb des Bereichs solcher primitiven Datentypen speichern. Die BigInteger Klasse wird für mathematische Berechnungen für sehr große Zahlen verwendet. Es stellt alle Methoden aus dem java.lang.Math Paket und Analoga zu allen primitiven Ganzzahloperatoren von Java bereit. BigIntegerDie Klasse umfasst Operationen für modulare Arithmetik, Bitmanipulation, GCD-Berechnung und einige andere Operationen. BigIntegers werden in der Zweierkomplement-Notation dargestellt. Es gibt keine theoretische Grenze dafür, wie groß eine Zahl gespeichert werden kann, da der Speicher dynamisch zugewiesen wird. Allerdings ist der Speicher praktisch begrenzt und wir können eine Ganzzahl speichern, deren Anzahl an Bits kleiner oder gleich dem Integer.MAX_VALUE ist . Dies bietet eine ausreichend große Obergrenze, um praktisch alle großen Zahlen zu speichern.Wie wird die BigInteger-Klasse implementiert?
import java.math.BigInteger;
Um die BigInteger- Klasse in Ihrem Code zu implementieren, müssen Sie das Paket java.math.BigInteger importieren .
Deklaration der BigInteger-Klasse
Die BigInteger Klasse in Java wird im Paket java.math wie folgt deklariert :
public class BigInteger
extends Number
implements Comparable<BigInteger>
Die BigInteger Klasse erweitert die Number- Klasse und implementiert eine Comparable- Schnittstelle. Es wird im Paket java.math deklariert und definiert.
Klassenkonstruktoren
Die BigInteger- Klasse von Java verfügt über viele überladene Konstruktoren. Sie können versuchen, die einzelnen Elemente im Editor auszuführen, um zu sehen, wie sie funktionieren.Sr# | Konstrukteur | Beschreibung |
---|---|---|
1 | BigInteger(byte[] val) | Übersetzt ein Byte-Array in einen BigInteger . |
2 | BigInteger(int signum, byte[] Magnitude) | Übersetzt die Vorzeichen-Größen-Darstellung in eine BigInteger . |
3 | BigInteger(int bitLength, int Gewissheit, Random rnd) | Konstruiert einen zufällig generierten positiven BigInteger der angegebenen Länge. |
4 | BigInteger(String-Wert) | Übersetzt die dezimale Zeichenfolgendarstellung in eine BigInteger . |
5 | BigInteger(String val, int radix) | Konvertiert die String- Darstellung in der angegebenen Basis in eine BigInteger . |
Klassenmethoden
Die BigInteger- Klasse von Java verfügt über viele Methoden, von denen einige im Folgenden beschrieben werden. In der Tabelle stellt „this“ den BigInteger dar , der die Methode aufruft, und „ val “ ist das an die Methode übergebene Argument.Abs() | Es gibt den absoluten Wert von „ diesem “ BigInteger zurück . |
hinzufügen() | Es gibt eine Biginteger zurück, indem es „ this + val “ berechnet . |
subtrahieren() | Durch die Berechnung von „ this-val “ wird eine Biginteger zurückgegeben . |
teilen() | Es gibt einen Biginteger zurück, indem es „ this/val “ berechnet . |
multiplizieren() | Durch die Berechnung von „ this * val “ wird eine große Ganzzahl zurückgegeben . |
Wert von() | Es gibt einen BigInteger- Wert des angegebenen long zurück . |
gleich() | Es vergleicht die Gleichheit zwischen „ diesem “ BigInteger und einem bestimmten Objekt. |
pow() | Es gibt eine große ganze Zahl zurück, indem es „ diesen Exponenten “ berechnet . |
Mindest() | Es gibt das Minimum zwischen „ this “ BigInteger und dem angegebenen Wert zurück. |
max() | Es gibt das Maximum zwischen „ this “ BigInteger und dem angegebenen Wert zurück. |
mod() | Es gibt einen Wert für „ dieser Mod m “ zurück. |
gcd() | Es gibt einen BigInteger zurück , der der größte gemeinsame Teiler zwischen dem absoluten Wert von „ this “ und dem „ übergebenen Wert “ ist. |
bitCount() | Es gibt die Anzahl der Bits in der Zweierkomplementdarstellung von „ this “ BigInteger zurück . |
bitLength() | Es gibt die Anzahl der Bits, mit Ausnahme des Vorzeichenbits, in der minimalen Zweierkomplementdarstellung von „ this “ BigInteger zurück . |
Und() | Es gibt eine große Ganzzahl zurück, indem es „ this & val “ berechnet . |
oder() | Es gibt eine Biginteger zurück, indem es ' this | berechnet val '. |
nicht() | Durch die Berechnung von „~this“ wird eine Biginteger zurückgegeben . |
und nicht() | Es gibt eine Biginteger zurück, indem es „ this & ~val “ berechnet . |
intValue() | Es konvertiert BigInteger in einen int . |
floatValue() | Es konvertiert BigInteger in float . |
longValue() | Es konvertiert BigInteger in long . |
doubleValue() | Es konvertiert BigInteger in double . |
toString() | Es gibt die dezimale Zeichenfolgendarstellung von BigInteger zurück . |
Beispiel 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));
}
}
Ausgang
15511210043330985984000000
Erläuterung
Im obigen Snippet wird der Faktor einer großen Zahl mithilfe der BigInteger- Klasse durch Importieren des Pakets java.math.BigInteger berechnet. Wir haben eine berechneFactorial -Methode erstellt . Diese Methode erstellt einen BigInteger und berechnet dann die Fakultät mithilfe der Multiplikationsmethode f.multiply(BigInteger.valueOf(i)).Beispiel 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);
}
}
Ausgang
60 - 20 = 40
60 + 20 = 80
60 * 20 = 1200
60 / 20 = 3
Min. Wert: 20
Max. Wert: 60
Erläuterung
Im obigen Snippet haben wir zwei BigInteger mit dem BigInteger(String val) -Konstruktor erstellt. Wir haben verschiedene Methoden auf BigInteger s big1 und big2 mit den Werten 20 bzw. 60 angewendet. Wir haben die folgenden Methoden angewendet:- big2.subtract(big1) , um 20 von 60 zu subtrahieren.
- big1.add(big2) um 20 und 60 zu addieren.
- big1.multiply(big2) zum Multiplizieren von 20 und 60.
- big2.divide(big1) um 60 durch 20 zu dividieren.
- big1.min(big2) , um den kleineren der beiden Werte zu erhalten.
- big1.max(big2) , um den größeren der beiden Werte zu erhalten.
GO TO FULL VERSION