Java BigInteger

Java Biginteger



Java offre una speciale classe BigInteger per la gestione di numeri estremamente grandi maggiori di numeri a 64 bit. La dimensione dei valori interi che questa classe può gestire è semplicemente vincolata dalla memoria allocata della JVM. La classe BigInteger, che eredita un Number, implementa l'interfaccia Comparable. Fornisce equivalenti per ogni operatore intero primitivo Java e per ogni metodo del modulo java.lang.math. Il valore memorizzato dell'oggetto BigInteger non può essere modificato a causa dell'immutabilità della classe BigInteger.

Esempio 1:

Il seguente programma fornisce un modo per creare il BigInteger in java e applica l'operazione aritmetica al valore BigInteger fornito.








Abbiamo importato la classe BigInteger dal pacchetto java math all'interno del programma. Successivamente, abbiamo dichiarato gli oggetti BigInteger 'bigInt1' e 'bigInt2' nel metodo main() della classe java 'BigIntegerExample'. Successivamente, abbiamo inizializzato gli oggetti BigInteger con i valori numerici grandi all'interno della classe BigInteger. Abbiamo creato un altro oggetto della classe BigInteger per eseguire l'operazione aritmetica sul valore intero grande specificato. Gli oggetti sono dichiarati come 'Moltiplicazione' per moltiplicare il valore BinInteger e 'Divisione' per dividere il valore BigInteger.



Quindi, abbiamo assegnato 'bigInt1' insieme al metodo multiply() di BigInteger all'oggetto 'multiply', che accetta l'input 'bigInt2'. Inoltre, abbiamo chiamato il metodo division(), che accetta il parametro 'bigInt2' che verrà diviso con 'bigInt1' e stampa i risultati dopo l'esecuzione.



I risultati dell'operazione di moltiplicazione e divisione sui valori BigInteger sono mostrati nell'immagine di output seguente. Questo è il modo in cui BigInteger è configurato in java e utilizzato per varie operazioni.





Esempio 2:

Il calcolo fattoriale è un buon esempio di un numero intero che riceve input molto grandi. Il BigInteger può anche essere utilizzato per ottenere il fattoriale per valori interi più grandi.




Abbiamo creato la funzione 'fattoriale' della classe BigInteger, dove l'oggetto 'num' di tipo int viene passato come argomento per restituire il fattoriale del valore 'Num'. All'interno della funzione “fattoriale”, abbiamo dichiarato un oggetto BigInteger “max_fict” dove è specificato il valore BigInteger “2”. Successivamente, abbiamo implementato il ciclo for, che ripeterà e quindi moltiplicherà il valore 'max_fict' per 4, 5 e fino all'ennesimo valore quando viene richiamato il metodo multiply(). Lo stesso multiply() è chiamato un altro metodo 'valueOf', in cui viene fornito l'oggetto 'i' del ciclo for. L'istruzione return fornirà il fattoriale più grande. Successivamente, abbiamo stabilito il metodo main() del programma. Abbiamo inizializzato l'oggetto 'Num' con il valore e stampato il fattoriale di 'Num' dal metodo factorial().

Il valore fattoriale del numero '40' fornisce il valore BigInteger come segue:

Esempio 3:

La funzione bitCount() della classe BigInteger conta i bit. Il metodo bitCount() fornisce il numero di bit che sono sotto forma di due complementi in questo BigInteger e sono diversi dal bit di segno. Questo metodo restituisce i bit impostati quando il valore di BigInteger è positivo. D'altra parte, se BigInteger viene specificato con un valore negativo, questo metodo restituisce il numero di bit di ripristino.


Abbiamo dichiarato due variabili, 'b1' e 'b2' della classe di tipo 'BigInteger'. Abbiamo anche definito altre due variabili, 'integer1' e 'integer2', tipo primitivo int. Dopo la dichiarazione, abbiamo inizializzato 'b1' con il valore BigInteger positivo e 'b2' con il valore BigInteger negativo. Successivamente, abbiamo assegnato 'integer1' e 'integer2' con il metodo bitCount() alle variabili BigInteger 'b1' e 'b2'. I bit conteggiati verranno ottenuti dal metodo bitCount() per i valori BigInteger specificati.

Il BigInteger positivo fornisce i bit '2' e il valore negativo di BigInteger emette il valore del bit '1'.

Esempio 4:

Il valore assoluto dei dati numerici di grandi dimensioni in BigInteger può essere determinato utilizzando il metodo abs() della classe BigInteger. Il metodo abs() restituisce il valore assoluto di BigInteger.


Abbiamo una classe BigInteger, da cui abbiamo dichiarato quattro variabili: 'big1', 'big2', 'big3' e 'big4'. Le variabili 'big1' e 'big2' sono specificate rispettivamente con valori positivi e negativi. Successivamente, abbiamo invocato il metodo abs() con 'big1' e 'big2' nelle variabili 'big3' e 'big4'. Si noti che il metodo abs() non accetta alcun valore di input ma viene chiamato con le variabili 'big1' e 'big2'. Il metodo abs() ottiene il valore assoluto per queste variabili BigInteger e i risultati verranno stampati al momento della compilazione.

Il valore assoluto dei valori 432 positivi e 432 negativi è lo stesso perché il metodo abs() restituisce sempre il valore assoluto positivo.

Esempio 5:

Il confronto dei valori BigInteger può essere ottenuto utilizzando il metodo BigInteger compareTo(). Il BigInteger viene confrontato con il BigInteger immesso come parametro all'interno del metodo compareTo(). Il valore restituito dal metodo compareTo() è basato sui valori BigInteger. Quando il confronto del valore BigInteger è uguale, viene restituito zero. In caso contrario, vengono restituiti '1' e '-1' a condizione che il valore BigInteger sia maggiore o minore del valore BigInteger passato come argomento.


Abbiamo oggetti 'MyBigInt1' e 'MyBigtInt2' dichiarazione della classe 'BigInteger'. Questi oggetti vengono quindi specificati con gli stessi valori BigInteger. Successivamente, abbiamo creato un altro oggetto, 'comparevalue' in cui l'oggetto 'MyBigInt1' viene chiamato con il metodo compareTo() e l'oggetto 'MyBigInt2' viene passato come argomento da confrontare con l'oggetto 'MyBigInt2'. Successivamente, abbiamo un'istruzione if-else in cui abbiamo verificato se i risultati del metodo compareTo() sono uguali al valore '0' oppure no.

Poiché entrambi gli oggetti BigInteger hanno gli stessi valori, i risultati compareTo() restituiscono zero, come mostrato nell'immagine sottostante.

Esempio 6:

Il metodo BigInteger flipBit(index) può essere utilizzato anche per capovolgere in una posizione di bit specifica all'interno di un BigInteger. Questo metodo valuta (bigInt ^ (1<


Abbiamo definito due variabili BigInteger, 'B_val1' e 'B_val2'. La variabile 'B_val1' viene inizializzata con la classe BigInteger, dove viene specificato il valore. Quindi, abbiamo impostato la variabile 'B_val2' con il metodo flipBit(), dove l'operazione flipBit viene eseguita sulla variabile 'B_value' con il valore di indice '2'.

La posizione dell'indice del valore BigInteger '9' viene invertita con l'indice '2', che restituisce il valore '13' nell'output.

Conclusione

La classe BigInteger è molto comoda da usare ed è spesso utilizzata nella programmazione competitiva grazie alla sua vasta libreria di metodi. Il BigInteger viene utilizzato per il calcolo di numeri molto lunghi che vanno oltre la capacità di tutti i tipi di dati primitivi attualmente accessibili. Fornisce vari metodi per operazioni aritmetiche modulari. Abbiamo prima creato BigInteger e poi coperto alcuni dei suoi metodi.