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:- big2.subtract(big1) per sottrarre 20 da 60.
- big1.add(big2) per sommare 20 e 60.
- big1.multiply(big2) per moltiplicare 20 e 60.
- big2.divide(big1) per dividere 60 per 20.
- big1.min(big2) per ottenere il più piccolo dei due valori.
- big1.max(big2) per ottenere il maggiore dei due valori.
GO TO FULL VERSION