CodeGym /Java-Blog /Random-DE /Java BigInteger-Klasse
Autor
Oleksandr Miadelets
Head of Developers Team at CodeGym

Java BigInteger-Klasse

Veröffentlicht in der Gruppe Random-DE

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 „ diesemBigInteger 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 „ diesemBigInteger 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 „ thisBigInteger und dem angegebenen Wert zurück.
max() Es gibt das Maximum zwischen „ thisBigInteger 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 „ thisBigInteger zurück .
bitLength() Es gibt die Anzahl der Bits, mit Ausnahme des Vorzeichenbits, in der minimalen Zweierkomplementdarstellung von „ thisBigInteger 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:
  1. big2.subtract(big1) , um 20 von 60 zu subtrahieren.
  2. big1.add(big2) um 20 und 60 zu addieren.
  3. big1.multiply(big2) zum Multiplizieren von 20 und 60.
  4. big2.divide(big1) um 60 durch 20 zu dividieren.
  5. big1.min(big2) , um den kleineren der beiden Werte zu erhalten.
  6. big1.max(big2) , um den größeren der beiden Werte zu erhalten.
Es ist wichtig zu beachten, dass java.math.BigInteger oben im Code importiert wird.

Abschluss

Mittlerweile sollten Sie mit der BigInteger- Klasse in Java vertraut sein. Sie sollten in der Lage sein, BigInteger s in Ihrem Code mit verschiedenen Konstruktortypen zu verwenden. Mithilfe der Methoden der BigInteger- Klasse sollten Sie auch in der Lage sein, verschiedene arithmetische und logische Operationen an ihnen durchzuführen. Als Herausforderung können Sie versuchen, verschiedene Methoden mit unterschiedlichen Werten von BigInteger s aufzurufen. Es wird Ihr Verständnis von BigInteger s in Java weiter stärken. Um beim Lernen sicherer zu sein, üben Sie es immer wieder. Der Schlüssel zu gutem Codieren ist Übung. Viel Glück und viel Spaß beim Codieren!
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION