Java BigInteger

Java Biginteger



A Java egy speciális BigInteger osztályt kínál a 64 bitesnél nagyobb számok kezelésére. Az osztály által kezelhető egész értékek méretét egyszerűen korlátozza a JVM lefoglalt memóriája. A BigInteger osztály, amely egy Number-t örökli. A Comparable felületet valósítja meg. Egyenértékűeket ad minden Java primitív egész operátorhoz, valamint a java.lang.math modul minden metódusához. A BigInteger objektum tárolt értéke nem módosítható a BigInteger osztály megváltoztathatatlansága miatt.

1. példa:

A következő program módot ad a BigInteger létrehozására Java-ban, és alkalmazza az aritmetikai műveletet a megadott BigInteger értékre.








A BigInteger osztályt importáltuk a programon belüli java matematikai csomagból. Ezt követően a BigInteger objektumokat „bigInt1” és „bigInt2” deklaráltuk a „BigIntegerExample” java osztály main() metódusában. Ezután inicializáltuk a BigInteger objektumokat a BigInteger osztályon belüli nagy számértékekkel. Létrehoztuk a BigInteger osztály egy másik objektumát a megadott nagy egész érték számtani műveleteinek végrehajtására. Az objektumok „Szorzásként” vannak deklarálva a BinInteger érték szorzásához és „Osztásként” a BigInteger érték elosztásához.



Ezután hozzárendeltük a „bigInt1”-et a BigInteger multiply() metódusával együtt a „multiply” objektumhoz, amely a „bigInt2” bemenetet veszi fel. Meghívtuk a division() metódust is, amely a „bigInt2” paramétert veszi fel, amelyet a „bigInt1”-el osztunk, és a végrehajtás után kiírja az eredményeket.



A BigInteger értékek szorzási és osztási műveleteinek eredményei a következő kimeneti képen láthatók. Így van a BigInteger konfigurálva java-ban, és különféle műveletekhez használható.





2. példa:

A faktorszámítás jól szemlélteti, hogy egy egész szám nagyon nagy bemeneteket kap. A BigInteger is használható nagyobb egész értékek faktoriálisának lekérésére.




Létrehoztuk a BigInteger osztály „faktoriális” függvényét, ahol az int típusú „num” objektumot adjuk át argumentumként a „Num” értékű faktoriális visszaadásához. A „factorial” függvényen belül deklaráltunk egy BigInteger objektumot „max_fict”, ahol a BigInteger értéke „2” van megadva. Ezt követően telepítettük a for-ciklust, amely megismétli, majd megszorozza a „max_fict” értéket 4-gyel, 5-tel és legfeljebb az n-edik értékig, amikor a multiply() metódus meghívásra kerül. Magát a multiply()-t egy másik „valueOf” metódusnak nevezik, ahol a for-ciklus „i” objektuma van megadva. A return utasítás megadja a nagyobb faktoriálist. Ezután létrehoztuk a program main() metódusát. A „Num” objektumot inicializáltuk az értékkel, és kinyomtattuk a „Num” faktoriálisát a factorial() metódusból.

A „40” szám faktoriális értéke a következőképpen adja meg a BigInteger értéket:

3. példa:

A BigInteger osztály bitCount() függvénye számolja a biteket. A bitCount() metódus megadja azoknak a biteknek a számát, amelyek ebben a BigIntegerben két komplementer formájában vannak, és eltérnek az előjelbittől. Ez a módszer visszaadja a beállított biteket, ha a BigInteger értéke pozitív. Másrészt, ha a BigInteger negatív értékkel van megadva, ez a metódus a visszaállítási bitek számát adja vissza.


Két változót deklaráltunk, a „BigInteger” típusú „b1” és „b2” típust. Két további változót is definiáltunk, az „integer1” és „integer2” int primitív típust. A deklarációt követően a „b1”-et pozitív BigInteger értékkel, a „b2”-t pedig a negatív BigInteger értékkel inicializáltuk. Ezután a bitCount() metódussal hozzárendeltük az „integer1” és „integer2” értékeket a BigInteger „b1” és „b2” változókhoz. A megszámolt bitek a bitCount() metódusból származnak a megadott BigInteger értékekhez.

A pozitív BigInteger adja a „2” bitet, a BigInteger negatív értéke pedig az „1” bit értéket adja ki.

4. példa:

A BigInteger nagy méretű numerikus adatainak abszolút értéke a BigInteger osztály abs() metódusával határozható meg. Az abs() metódus a BigInteger abszolút értékét adja vissza.


Van egy BigInteger osztályunk, amelyből négy változót deklaráltunk: „big1”, „big2”, „big3” és „big4”. A „big1” és „big2” változók pozitív, illetve negatív értékekkel vannak megadva. Ezt követően meghívtuk az abs() metódust „big1” és „big2”-vel a „big3” és „big4” változókban. Vegye figyelembe, hogy az abs() metódus nem vesz fel semmilyen bemeneti értéket, hanem a „big1” és „big2” változókkal hívja meg. Az abs() metódus megkapja ezeknek a BigInteger változóknak az abszolút értékét, és az eredményeket a fordításkor nyomtatja ki.

A pozitív 432 és a negatív 432 értékek abszolút értéke megegyezik, mert az abs() metódus mindig a pozitív abszolút értéket adja vissza.

5. példa:

A BigInteger értékek összehasonlítása a BigInteger Összehasonlítás() metódussal érhető el. A BigIntegert összehasonlítja a BigIntegerrel, amelyet paraméterként adunk meg az Összehasonlítás() metóduson belül. Az Összehasonlítás() metódus visszatérési értéke a BigInteger értékeken alapul. Ha a BigInteger érték összehasonlítása egyenlő, akkor nullát ad vissza. Ellenkező esetben „1” és „-1” azzal a feltétellel tér vissza, hogy a BigInteger érték nagyobb vagy kisebb, mint az argumentumként átadott BigInteger érték.


A „BigInteger” osztályba tartozó „MyBigInt1” és „MyBigtInt2” objektumokkal rendelkezünk. Ezek az objektumok ezután ugyanazokkal a BigInteger értékekkel vannak megadva. Ezt követően létrehoztunk egy másik objektumot, a „comparevalue”-t, ahol a „MyBigInt1” objektum meghívásra kerül az összehasonlítás() metódussal, és a „MyBigInt2” objektum argumentumként kerül átadásra a „MyBigInt2” objektummal való összehasonlításhoz. Ezután van egy if-else utasításunk, ahol ellenőriztük, hogy az Összehasonlítás() metódus eredményei megegyeznek-e a „0” értékkel vagy sem.

Mivel mindkét BigInteger objektumnak ugyanaz az értéke, az Összehasonlítás() eredmények nullát adnak vissza, amint az az alábbi képen látható.

6. példa:

A BigInteger flipBit(index) metódus arra is használható, hogy a BigIntegeren belül egy adott bithelyen átfordítson. Ez a módszer kiértékeli (bigInt ^ (1<


Két BigInteger változót határoztunk meg, a „B_val1” és „B_val2”. A „B_val1” változó a BigInteger osztállyal van inicializálva, ahol az érték meg van adva. Ezután a flipBit() metódussal beállítottuk a „B_val2” változót, ahol a flipBit művelet a „2” indexértékű „B_value” változón történik.

A „9” BigInteger érték indexpozíciója a „2” indexszel van átfordítva, amely a „13” értéket adja ki a kimenetben.

Következtetés

A BigInteger osztály nagyon kényelmesen használható, és a hatalmas metóduskönyvtárnak köszönhetően gyakran használják a versenyprogramozásban. A BigInteger olyan nagyon hosszú számok kiszámítására szolgál, amelyek meghaladják az összes jelenleg elérhető primitív adattípus kapacitását. Különféle módszereket biztosít a moduláris aritmetikai műveletekhez. Először létrehoztuk a BigIntegert, majd bemutattuk néhány módszerét.