Java BigInteger

Java Biginteger



Java oferă o clasă specială BigInteger pentru gestionarea numerelor extrem de mari care sunt mai mari decât numerele de 64 de biți. Mărimea valorilor întregi pe care această clasă le poate gestiona este pur și simplu constrânsă de memoria alocată JVM-ului. Clasa BigInteger, care moștenește un Number.implementează interfața Comparable. Oferă echivalente pentru fiecare operator de numere întregi primitive Java, precum și pentru fiecare metodă din modulul java.lang.math. Valoarea stocată a obiectului BigInteger nu poate fi modificată din cauza imuabilității clasei BigInteger.

Exemplul 1:

Următorul program oferă o modalitate de a crea BigInteger în java și aplică operația aritmetică la valoarea BigInteger furnizată.








Am importat clasa BigInteger din pachetul de matematică java din cadrul programului. După aceea, am declarat obiectele BigInteger „bigInt1” și „bigInt2” în metoda main() a clasei java „BigIntegerExample”. Apoi, am inițializat obiectele BigInteger cu valori numerice mari din clasa BigInteger. Am creat un alt obiect al clasei BigInteger pentru efectuarea operației aritmetice asupra valorii întregi mari specificate. Obiectele sunt declarate ca „Multiplicare” pentru înmulțirea valorii BinInteger și „Diviziune” pentru împărțirea valorii BigInteger.



Apoi, am atribuit „bigInt1” împreună cu metoda multiply() a lui BigInteger obiectului „multiplicare”, care ia intrarea „bigInt2”. De asemenea, am numit metoda division(), care ia parametrul „bigInt2” care va fi împărțit cu „bigInt1” și tipărește rezultatele după execuție.



Rezultatele operațiunii de înmulțire și împărțire pe valorile BigInteger sunt afișate în următoarea imagine de ieșire. Acesta este modul în care BigInteger este configurat în java și utilizat pentru diferite operațiuni.





Exemplul 2:

Calculul factorial este o ilustrare bună a unui număr întreg care primește intrări foarte mari. BigInteger poate fi, de asemenea, utilizat pentru a obține factorialul pentru valori întregi mai mari.




Am creat funcția „factorială” a clasei BigInteger, unde obiectul „num” de tip int este transmis ca argument pentru a returna factorialul valorii „Num”. În cadrul funcției „factoriale”, am declarat un obiect BigInteger „max_fict” unde este specificată valoarea BigInteger „2”. După aceea, am implementat bucla for, care va itera și apoi va înmulți valoarea „max_fict” cu 4, 5 și până la a n-a valoare pe măsură ce este invocată metoda multiply(). Multiply() în sine este numită o altă metodă „valueOf”, unde este furnizat obiectul „i” al buclei for. Declarația de returnare va furniza factorialul mai mare. Apoi, am stabilit metoda main() a programului. Am inițializat obiectul „Num” cu valoarea și am tipărit factorialul „Num” din metoda factorial().

Valoarea factorială a numărului „40” oferă valoarea BigInteger după cum urmează:

Exemplul 3:

Funcția bitCount() a clasei BigInteger numără biții. Metoda bitCount() furnizează numărul de biți care sunt sub formă de două complemente în acest BigInteger și sunt diferiți de bitul de semn. Această metodă returnează biții setați atunci când valoarea lui BigInteger este pozitivă. Pe de altă parte, dacă BigInteger este specificat cu o valoare negativă, această metodă returnează numărul de biți de resetare.


Am declarat două variabile, „b1” și „b2” de tipul clasei „BigInteger”. De asemenea, am mai definit două variabile, „integer1” și „integer2”, tipul primitiv int. În urma declarației, am inițializat „b1” cu valoarea BigInteger pozitivă și „b2” cu valoarea BigInteger negativă. Apoi, am atribuit „integer1” și „integer2” cu metoda bitCount() variabilelor BigInteger „b1” și „b2”. Biții numărați vor fi obținuți din metoda bitCount() pentru valorile BigInteger specificate.

BigInteger pozitiv furnizează biții „2”, iar valoarea negativă a lui BigInteger emite valoarea de bit „1”.

Exemplul 4:

Valoarea absolută a datelor numerice de dimensiuni mari din BigInteger poate fi determinată utilizând metoda abs() a clasei BigInteger. Metoda abs() returnează valoarea absolută a lui BigInteger.


Avem o clasă BigInteger, din care am declarat patru variabile: „big1”, „big2”, „big3” și „big4”. Variabilele „big1” și „big2” sunt specificate cu valori pozitive și, respectiv, negative. După aceea, am invocat metoda abs() cu „big1” și „big2” în variabilele „big3” și „big4”. Rețineți că metoda abs() nu ia nicio valoare de intrare, ci este apelată cu variabilele „big1” și „big2”. Metoda abs() primește valoarea absolută pentru aceste variabile BigInteger, iar rezultatele vor fi tipărite în momentul compilării.

Valoarea absolută a valorilor pozitive 432 și negative 432 este aceeași, deoarece metoda abs() returnează întotdeauna valoarea absolută pozitivă.

Exemplul 5:

Compararea valorilor BigInteger poate fi realizată folosind metoda BigInteger compareTo(). BigInteger este comparat cu BigInteger care este introdus ca parametru în cadrul metodei compareTo(). Valoarea returnată a metodei compareTo() se bazează pe valorile BigInteger. Când comparația valorii BigInteger este egală, atunci este returnat zero. În caz contrar, „1” și „-1” sunt returnate cu condiția ca valoarea BigInteger să fie mai mare sau mai mică decât valoarea BigInteger transmisă ca argument.


Avem obiectele „MyBigInt1” și „MyBigtInt2” declarație din clasa „BigInteger”. Aceste obiecte sunt apoi specificate cu aceleași valori BigInteger. După aceea, am creat un alt obiect, „comparevalue”, unde obiectul „MyBigInt1” este apelat cu metoda compareTo(), iar obiectul „MyBigInt2” este transmis ca argument pentru a compara cu obiectul „MyBigInt2”. În continuare, avem o instrucțiune if-else în care am verificat dacă rezultatele metodei compareTo() sunt egale cu valoarea „0” sau nu.

Deoarece ambele obiecte BigInteger au aceleași valori, rezultatele compareTo() returnează zero, așa cum se arată în imaginea de mai jos.

Exemplul 6:

Metoda BigInteger flipBit(index) poate fi folosită și pentru a răsturna la o anumită locație de biți într-un BigInteger. Această metodă evaluează (bigInt ^ (1<


Am definit două variabile BigInteger, „B_val1” și „B_val2”. Variabila „B_val1” este inițializată cu clasa BigInteger, unde este specificată valoarea. Apoi, am setat variabila „B_val2” cu metoda flipBit(), unde operația flipBit este efectuată pe variabila „B_value” cu valoarea indexului „2”.

Poziția indexului valorii BigInteger „9” este inversată cu indexul „2”, care scoate valoarea „13” în ieșire.

Concluzie

Clasa BigInteger este foarte convenabil de utilizat și este frecvent utilizată în programarea competitivă datorită bibliotecii sale vaste de metode. BigInteger este utilizat pentru calcularea numerelor foarte lungi care depășesc capacitatea tuturor tipurilor de date primitive accesibile în prezent. Acesta oferă diverse metode pentru operații aritmetice modulare. Am creat mai întâi BigInteger și apoi am acoperit câteva dintre metodele sale.