Java BigInteger

Java Biginteger



Java nudi posebnu klasu BigInteger za upravljanje iznimno velikim brojevima koji su veći od 64-bitnih brojeva. Veličina cjelobrojnih vrijednosti koje ova klasa može obraditi jednostavno je ograničena dodijeljenom memorijom JVM-a. Klasa BigInteger, koja nasljeđuje Number.implementira sučelje Comparable. Daje ekvivalente za svaki Java primitivni cjelobrojni operator kao i svaku metodu iz modula java.lang.math. Pohranjena vrijednost objekta BigInteger ne može se mijenjati zbog nepromjenjivosti klase BigInteger.

Primjer 1:

Sljedeći program pruža način za stvaranje BigIntegera u Javi i primjenu aritmetičke operacije na danu vrijednost BigIntegera.








Uvezli smo klasu BigInteger iz java math paketa unutar programa. Nakon toga smo deklarirali BigInteger objekte “bigInt1” i “bigInt2” u metodi main() java klase “BigIntegerExample.” Zatim smo inicijalizirali objekte BigInteger s velikim numeričkim vrijednostima unutar klase BigInteger. Stvorili smo još jedan objekt klase BigInteger za izvođenje aritmetičke operacije na navedenoj velikoj cjelobrojnoj vrijednosti. Objekti su deklarirani kao 'Množenje' za množenje BinInteger vrijednosti i 'Division' za dijeljenje BigInteger vrijednosti.



Zatim smo dodijelili 'bigInt1' zajedno s metodom multiply() BigIntegera objektu 'multiply', koji uzima ulaz 'bigInt2.' Također, pozvali smo metodu division() koja uzima parametar “bigInt2” koji će biti podijeljen s “bigInt1” i ispisuje rezultate nakon izvršenja.



Rezultati operacija množenja i dijeljenja na vrijednostima BigInteger prikazani su na sljedećoj izlaznoj slici. Ovako se BigInteger konfigurira u Javi i koristi za razne operacije.





Primjer 2:

Faktorsko izračunavanje dobra je ilustracija cijelog broja koji dobiva vrlo velike ulaze. BigInteger se također može koristiti za dobivanje faktorijela za veće vrijednosti cijelog broja.




Stvorili smo funkciju 'faktorijel' klase BigInteger, gdje se objekt 'num' tipa int prosljeđuje kao argument za vraćanje faktorijela vrijednosti 'Num'. Unutar funkcije “factorial”, deklarirali smo BigInteger objekt “max_fict” gdje je specificirana BigInteger vrijednost “2”. Nakon toga smo implementirali for-petlju, koja će ponavljati i zatim množiti vrijednost 'max_fict' s 4, 5 i do n-te vrijednosti dok se poziva metoda multiply(). Sama multiply() naziva se još jednom metodom 'valueOf', gdje se daje objekt 'i' for-petlje. Naredba return će dati veći faktorijel. Zatim smo uspostavili programsku metodu main(). Inicijalizirali smo objekt 'Num' s vrijednošću i ispisali faktorijel 'Num' iz metode factorial().

Vrijednost faktorijela broja '40' daje vrijednost BigInteger na sljedeći način:

Primjer 3:

Funkcija bitCount() klase BigInteger broji bitove. Metoda bitCount() daje broj bitova koji su u obliku dva komplementa u ovom BigIntegeru i razlikuju se od bita predznaka. Ova metoda vraća postavljene bitove kada je vrijednost BigIntegera pozitivna. S druge strane, ako je BigInteger naveden s negativnom vrijednošću, ova metoda vraća broj bitova resetiranja.


Deklarirali smo dvije varijable, “b1” i “b2” klase tipa “BigInteger.” Također smo definirali još dvije varijable, “integer1” i “integer2,” int primitivnog tipa. Nakon deklaracije, inicijalizirali smo 'b1' s pozitivnom BigInteger vrijednošću i 'b2' s negativnom BigInteger vrijednošću. Zatim smo dodijelili “cijeli broj1” i “cijeli broj2” metodom bitCount() varijablama BigInteger “b1” i “b2.” Izbrojani bitovi će se dobiti iz metode bitCount() za navedene vrijednosti BigInteger.

Pozitivni BigInteger daje '2' bita, a negativna vrijednost BigIntegera daje vrijednost bita '1'.

Primjer 4:

Apsolutna vrijednost numeričkih podataka velike veličine u BigIntegeru može se odrediti pomoću metode abs() klase BigInteger. Metoda abs() vraća apsolutnu vrijednost BigInteger-a.


Imamo klasu BigInteger iz koje smo deklarirali četiri varijable: 'big1', 'big2', 'big3' i 'big4'. Varijable 'big1' i 'big2' navedene su s pozitivnim i negativnim vrijednostima. Nakon toga pozvali smo metodu abs() s “big1” i “big2” u varijablama “big3” i “big4”. Imajte na umu da metoda abs() ne uzima nikakvu ulaznu vrijednost već se poziva s varijablama “big1” i “big2”. Metoda abs() dobiva apsolutnu vrijednost za ove varijable BigInteger, a rezultati će biti ispisani u vrijeme kompilacije.

Apsolutna vrijednost pozitivnih 432 i negativnih 432 vrijednosti je ista jer metoda abs() uvijek vraća pozitivnu apsolutnu vrijednost.

Primjer 5:

Usporedba BigInteger vrijednosti može se postići korištenjem metode BigInteger compareTo(). BigInteger uspoređuje se s BigIntegerom koji je unesen kao parametar unutar metode compareTo(). Povratna vrijednost metode compareTo() temelji se na vrijednostima BigInteger. Kada je usporedba vrijednosti BigInteger jednaka, vraća se nula. U suprotnom, vraćaju se “1” i “-1” pod uvjetom da je vrijednost BigInteger veća ili manja od vrijednosti BigInteger proslijeđene kao argument.


Imamo objekte 'MyBigInt1' i 'MyBigtInt2' deklaraciju klase 'BigInteger.' Ti se objekti tada specificiraju s istim BigInteger vrijednostima. Nakon toga, stvorili smo još jedan objekt, “comparevalue” gdje se objekt “MyBigInt1” poziva s metodom compareTo(), a objekt “MyBigInt2” se prosljeđuje kao argument za usporedbu s objektom “MyBigInt2”. Zatim imamo if-else naredbu u kojoj smo provjerili jesu li rezultati metode compareTo() jednaki vrijednosti “0” ili ne.

Budući da oba BigInteger objekta imaju iste vrijednosti, rezultati compareTo() vraćaju nulu, kao što je prikazano na slici ispod.

Primjer 6:

Metoda BigInteger flipBit(index) također se može koristiti za okretanje na određenoj lokaciji bita unutar BigIntegera. Ova metoda procjenjuje (bigInt ^ (1<


Definirali smo dvije varijable BigInteger, “B_val1” i “B_val2.” Varijabla “B_val1” inicijalizirana je s klasom BigInteger, gdje je navedena vrijednost. Zatim smo postavili varijablu “B_val2” metodom flipBit(), gdje se operacija flipBit izvodi na varijabli “B_value” s vrijednošću indeksa “2.”

Indeksni položaj BigInteger vrijednosti “9” okreće se s indeksom “2,” što daje vrijednost “13” u izlazu.

Zaključak

Klasa BigInteger vrlo je praktična za korištenje i često se koristi u kompetitivnom programiranju zbog svoje ogromne biblioteke metoda. BigInteger se koristi za izračun vrlo dugih brojeva koji nadilaze kapacitet svih trenutno dostupnih primitivnih tipova podataka. Pruža različite metode za modularne aritmetičke operacije. Prvo smo stvorili BigInteger, a zatim smo obradili nekoliko njegovih metoda.