Java BigInteger

Java Biginteger



Java ponúka špeciálnu triedu BigInteger na správu extrémne veľkých čísel, ktoré sú väčšie ako 64-bitové čísla. Veľkosť celočíselných hodnôt, ktoré táto trieda dokáže spracovať, je jednoducho obmedzená alokovanou pamäťou JVM. Trieda BigInteger, ktorá zdedí Number.implementuje rozhranie Comparable. Poskytuje ekvivalenty pre každý primitívny operátor celého čísla Java, ako aj pre každú metódu z modulu java.lang.math. Uložená hodnota objektu BigInteger sa nedá upraviť z dôvodu nemennosti triedy BigInteger.

Príklad 1:

Nasledujúci program poskytuje spôsob, ako vytvoriť BigInteger v jazyku Java a aplikovať aritmetickú operáciu na poskytnutú hodnotu BigInteger.








Triedu BigInteger sme importovali z matematického balíka java vo vnútri programu. Potom sme deklarovali objekty BigInteger „bigInt1“ a „bigInt2“ v metóde main() java triedy „BigIntegerExample“. Ďalej sme inicializovali objekty BigInteger s veľkými číselnými hodnotami v triede BigInteger. Vytvorili sme ďalší objekt triedy BigInteger na vykonávanie aritmetickej operácie so zadanou hodnotou veľkého celého čísla. Objekty sú deklarované ako „Multiplikácia“ na násobenie hodnoty BinInteger a „Division“ na delenie hodnoty BigInteger.



Potom sme priradili „bigInt1“ spolu s metódou multiply() BigInteger k objektu „multiply“, ktorý preberá vstup „bigInt2“. Tiež sme zavolali metódu division(), ktorá preberá parameter „bigInt2“, ktorý bude rozdelený na „bigInt1“, a po vykonaní vypíše výsledky.



Výsledky operácie násobenia a delenia na hodnotách BigInteger sú zobrazené na nasledujúcom výstupnom obrázku. Takto sa BigInteger konfiguruje v jave a používa sa na rôzne operácie.





Príklad 2:

Faktorový výpočet je dobrou ilustráciou toho, ako celé číslo dostáva veľmi veľké vstupy. BigInteger možno použiť aj na získanie faktoriálu pre väčšie celočíselné hodnoty.




Vytvorili sme funkciu „faktoriál“ triedy BigInteger, kde sa objekt „num“ typu int odovzdáva ako argument na vrátenie faktoriálu hodnoty „Num“. Vo funkcii „factorial“ sme deklarovali objekt BigInteger „max_fict“, kde je špecifikovaná hodnota BigInteger „2“. Potom sme nasadili for-loop, ktorý bude opakovať a potom vynásobiť hodnotu „max_fict“ 4, 5 a až n-tou hodnotou, keď sa vyvolá metóda multiply(). Samotná multiply() sa nazýva ďalšia metóda „valueOf“, kde je poskytnutý objekt „i“ slučky for. Príkaz return poskytne väčší faktoriál. Ďalej sme vytvorili metódu main() programu. Inicializovali sme objekt „Num“ s hodnotou a vytlačili faktoriál „Num“ z metódy factorial().

Faktorová hodnota čísla „40“ poskytuje hodnotu BigInteger takto:

Príklad 3:

Funkcia bitCount() triedy BigInteger počíta bity. Metóda bitCount() poskytuje počet bitov, ktoré sú v tomto BigInteger vo forme dvoch doplnkov a líšia sa od znamienkového bitu. Táto metóda vráti nastavené bity, keď je hodnota BigInteger kladná. Na druhej strane, ak je BigInteger zadaný so zápornou hodnotou, táto metóda vráti počet resetovaných bitov.


Deklarovali sme dve premenné, „b1“ a „b2“ triedy typu „BigInteger“. Definovali sme tiež dve ďalšie premenné, „integer1“ a „integer2“, int primitívny typ. Po vyhlásení sme inicializovali „b1“ kladnou hodnotou BigInteger a „b2“ zápornou hodnotou BigInteger. Ďalej sme priradili „integer1“ a „integer2“ pomocou metódy bitCount() k premenným BigInteger „b1“ a „b2“. Počítané bity sa získajú z metódy bitCount() pre zadané hodnoty BigInteger.

Kladná hodnota BigInteger poskytuje „2“ bity a záporná hodnota BigInteger poskytuje bitovú hodnotu „1“.

Príklad 4:

Absolútnu hodnotu veľkých číselných údajov v BigInteger možno určiť pomocou metódy abs() triedy BigInteger. Metóda abs() vracia absolútnu hodnotu BigInteger.


Máme triedu BigInteger, z ktorej sme deklarovali štyri premenné: „big1“, „big2“, „big3“ a „big4“. Premenné „big1“ a „big2“ sú špecifikované s kladnými a zápornými hodnotami. Potom sme vyvolali metódu abs() s „big1“ a „big2“ v premenných „big3“ a „big4“. Všimnite si, že metóda abs() nepreberá žiadnu vstupnú hodnotu, ale volá sa s premennými „big1“ a „big2“. Metóda abs() získa absolútnu hodnotu týchto premenných BigInteger a výsledky sa vytlačia v čase kompilácie.

Absolútna hodnota kladných 432 a záporných 432 hodnôt je rovnaká, pretože metóda abs() vždy vracia kladnú absolútnu hodnotu.

Príklad 5:

Porovnanie hodnôt BigInteger je možné dosiahnuť pomocou metódy BigInteger CompareTo(). BigInteger sa porovnáva s BigInteger, ktorý sa zadáva ako parameter v rámci metódy CompareTo(). Návratová hodnota metódy CompareTo() je založená na hodnotách BigInteger. Keď je porovnanie hodnoty BigInteger rovnaké, vráti sa nula. V opačnom prípade sa vrátia „1“ a „-1“ pod podmienkou, že hodnota BigInteger je väčšia alebo menšia ako hodnota BigInteger odovzdaná ako argument.


Máme deklaráciu objektov „MyBigInt1“ a „MyBigtInt2“ triedy „BigInteger“. Tieto objekty sú potom špecifikované s rovnakými hodnotami BigInteger. Potom sme vytvorili ďalší objekt, „comparevalue“, kde sa objekt „MyBigInt1“ volá pomocou metódy CompareTo() a objekt „MyBigInt2“ sa odovzdá ako argument na porovnanie s objektom „MyBigInt2“. Ďalej máme príkaz if-else, kde sme skontrolovali, či sa výsledky metódy CompareTo() rovnajú hodnote „0“ alebo nie.

Pretože oba objekty BigInteger majú rovnaké hodnoty, výsledky CompareTo() vrátia nulu, ako je znázornené na obrázku nižšie.

Príklad 6:

Metódu BigInteger flipBit(index) možno použiť aj na preklopenie na konkrétnom mieste bitu v rámci BigInteger. Táto metóda vyhodnocuje (bigInt ^ (1<


Definovali sme dve premenné BigInteger, „B_val1“ a „B_val2“. Premenná „B_val1“ je inicializovaná triedou BigInteger, kde je zadaná hodnota. Potom sme nastavili premennú „B_val2“ pomocou metódy flipBit(), kde sa operácia flipBit vykoná na premennej „B_value“ s hodnotou indexu „2“.

Pozícia indexu hodnoty BigInteger „9“ sa prehodí s indexom „2“, čím sa na výstupe zobrazí hodnota „13“.

Záver

Trieda BigInteger sa veľmi pohodlne používa a vďaka svojej rozsiahlej knižnici metód sa často používa v konkurenčnom programovaní. BigInteger sa používa na výpočet veľmi dlhých čísel, ktoré presahujú kapacitu všetkých v súčasnosti dostupných primitívnych dátových typov. Poskytuje rôzne metódy pre modulárne aritmetické operácie. Najprv sme vytvorili BigInteger a potom sme pokryli niekoľko jeho metód.