CodeGym /Java Blog /Random-IT /Classe Java BigInteger
John Squirrels
Livello 41
San Francisco

Classe Java BigInteger

Pubblicato nel gruppo Random-IT

Cos'è una classe BigInteger?

Esistono alcuni tipi di dati primitivi in ​​Java che vengono utilizzati, come int o long, per eseguire operazioni su numeri interi. Tuttavia, a volte è necessario memorizzare numeri elevati al di fuori dell'ambito di tali tipi di dati primitivi. La classe BigInteger viene utilizzata per calcoli matematici per numeri molto grandi. Fornisce tutti i metodi dal pacchetto java.lang.Math e analoghi a tutti gli operatori interi primitivi di Java. BigIntegerLa classe copre le operazioni per l'aritmetica modulare, la manipolazione dei bit, il calcolo MCD e poche altre operazioni. I BigInteger sono rappresentati nella notazione in complemento a due. Non esiste un limite teorico su quanto grande può essere memorizzato un numero perché la memoria è allocata dinamicamente. Tuttavia, praticamente la memoria è limitata e possiamo memorizzare un numero intero che ha il numero di bit inferiore o uguale a Integer.MAX_VALUE . Ciò fornisce un limite superiore sufficientemente grande per memorizzare praticamente quasi tutti i numeri grandi.

Come viene implementata la classe BigInteger?


import java.math.BigInteger;
Per implementare la classe BigInteger nel tuo codice, devi importare il pacchetto java.math.BigInteger .

Dichiarazione di classe BigInteger

La classe BigInteger in Java è dichiarata nel seguente modo nel pacchetto java.math :

public class BigInteger
   extends Number
      implements Comparable<BigInteger>
La classe BigInteger estende la classe Number e implementa un'interfaccia Comparable . È dichiarato e definito nel pacchetto java.math .

Costruttori di classe

La classe BigInteger di Java ha molti costruttori sovraccarichi. Puoi provare a eseguirli nell'editor per vedere come funzionano.
S# Costruttore Descrizione
1 BigInteger(byte[] valore) Traduce una matrice di byte in un BigInteger .
2 BigInteger(int signum, byte[] grandezza) Converte la rappresentazione della grandezza del segno in un BigInteger .
3 BigInteger(int bitLength, int certezza, Random rnd) Costruisce un BigInteger positivo generato in modo casuale della lunghezza specificata.
4 BigInteger(String val) Converte la rappresentazione di stringa decimale in un BigInteger .
5 BigInteger(String val, int radice) Converte la rappresentazione String nella radice specificata in un BigInteger .

Metodi di classe

La classe BigInteger di Java ha molti metodi, alcuni dei quali sono descritti di seguito. Nella tabella, "this" rappresenta il BigInteger che chiama il metodo e " val " è l'argomento passato al metodo.
addominali() Restituisce il valore assoluto di ' this ' BigInteger .
aggiungere() Restituisce un Biginteger calcolando ' this + val '.
sottrarre() Restituisce un Biginteger calcolando ' this - val '.
dividere() Restituisce un Biginteger calcolando ' this / val '.
moltiplicare() Restituisce un Biginteger calcolando ' this * val '.
valore di() Restituisce un valore BigInteger di long .
equivale() Confronta l'uguaglianza tra ' this ' BigInteger e un dato oggetto.
pow() Restituisce un Biginteger calcolando ' thisexponent '.
minimo() Restituisce il minimo tra ' this ' BigInteger e il valore dato.
massimo() Restituisce il massimo tra ' this ' BigInteger e il valore dato.
mod() Restituisce un valore per ' this mod m '.
mcd() Restituisce un BigInteger che è il massimo comune divisore tra il valore assoluto di ' this ' e il ' valore passato '.
bitCount() Restituisce il numero di bit nella rappresentazione in complemento a due di ' this ' BigInteger .
bitLength() Restituisce il numero di bit, escluso il bit di segno, nella rappresentazione minima in complemento a due di ' this ' BigInteger .
E() Restituisce un Biginteger calcolando ' this & val '.
O() Restituisce un Biginteger calcolando ' this | val '.
non() Restituisce un Biginteger calcolando ' ~this'.
e non() Restituisce un Biginteger calcolando ' this & ~val '.
intValue() Converte BigInteger in un int .
floatValue() Converte BigInteger in float .
longValue() Converte BigInteger in long .
doppioValore() Converte BigInteger in double .
accordare() Restituisce la rappresentazione di stringa decimale di BigInteger .

Esempio 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));
    }
}

Produzione

15511210043330985984000000

Spiegazione

Nello snippet precedente, il fattore di un numero elevato viene calcolato utilizzando la classe BigInteger importando il pacchetto java.math.BigInteger . Abbiamo creato un metodocalcFactorial . Questo metodo crea un BigInteger e quindi calcola il fattoriale usando il metodo multiply f.multiply(BigInteger.valueOf(i)) .

Esempio 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);
    }
}

Produzione

60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 valore minimo: 20 valore massimo: 60

Spiegazione

Nello snippet precedente, abbiamo creato due BigInteger s utilizzando il costruttore BigInteger(String val) . Abbiamo applicato metodi diversi su BigInteger s big1 e big2 con i valori 20 e 60 rispettivamente. Abbiamo applicato i seguenti metodi:
  1. big2.subtract(big1) per sottrarre 20 da 60.
  2. big1.add(big2) per sommare 20 e 60.
  3. big1.multiply(big2) per moltiplicare 20 e 60.
  4. big2.divide(big1) per dividere 60 per 20.
  5. big1.min(big2) per ottenere il più piccolo dei due valori.
  6. big1.max(big2) per ottenere il maggiore dei due valori.
È importante notare che java.math.BigInteger viene importato all'inizio del codice.

Conclusione

Ormai dovresti avere familiarità con la classe BigInteger in Java. Dovresti essere in grado di utilizzare BigInteger s nel tuo codice utilizzando diversi tipi di costruttori. Dovresti anche essere in grado di eseguire diverse operazioni aritmetiche e logiche su di essi utilizzando i metodi della classe BigInteger . Come sfida, puoi provare a chiamare metodi diversi con valori diversi di BigInteger s. Rafforzerà ulteriormente la tua comprensione di BigInteger in Java. Per essere più sicuro del tuo apprendimento, prova a esercitarlo più e più volte. La chiave per una buona codifica è la pratica. Buona fortuna e buona programmazione!
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION