Java BigInteger

Java Biginteger



Java nabízí speciální třídu BigInteger pro správu extrémně velkých čísel, která jsou větší než 64bitová čísla. Velikost celočíselných hodnot, které tato třída dokáže zpracovat, je jednoduše omezena přidělenou pamětí JVM. Třída BigInteger, která zdědí Number.implementuje rozhraní Comparable. Poskytuje ekvivalenty pro každý primitivní celočíselný operátor Java a také pro každou metodu z modulu java.lang.math. Uloženou hodnotu objektu BigInteger nelze upravit kvůli neměnnosti třídy BigInteger.

Příklad 1:

Následující program poskytuje způsob, jak vytvořit BigInteger v jazyce Java a aplikovat aritmetickou operaci na zadanou hodnotu BigInteger.








Importovali jsme třídu BigInteger z matematického balíčku java uvnitř programu. Poté jsme deklarovali objekty BigInteger „bigInt1“ a „bigInt2“ v metodě main() java třídy „BigIntegerExample“. Dále jsme inicializovali objekty BigInteger s velkými číselnými hodnotami v rámci třídy BigInteger. Vytvořili jsme další objekt třídy BigInteger pro provádění aritmetické operace na zadané hodnotě velkého celého čísla. Objekty jsou deklarovány jako „Multiplikace“ pro násobení hodnoty BinInteger a „Division“ pro dělení hodnoty BigInteger.



Potom jsme přiřadili „bigInt1“ spolu s metodou multiply() BigInteger k objektu „multiply“, který přebírá vstup „bigInt2“. Také jsme zavolali metodu division(), která přebírá parametr „bigInt2“, který bude rozdělen na „bigInt1“, a po provedení vytiskne výsledky.



Výsledky operace násobení a dělení na hodnotách BigInteger jsou zobrazeny na následujícím výstupním obrázku. Takto je BigInteger konfigurován v Javě a používán pro různé operace.





Příklad 2:

Faktoriální výpočet je dobrou ilustrací toho, jak celé číslo získává velmi velké vstupy. BigInteger lze také použít k získání faktoriálu pro větší celočíselné hodnoty.




Vytvořili jsme funkci „faktoriál“ třídy BigInteger, kde je objekt „num“ typu int předán jako argument pro vrácení faktoriálu hodnoty „Num“. Uvnitř funkce „factorial“ jsme deklarovali objekt BigInteger „max_fict“, kde je zadána hodnota BigInteger „2“. Poté jsme nasadili for-loop, který bude iterovat a poté násobit hodnotu „max_fict“ 4, 5 a až n-tou hodnotou, jak je vyvolána metoda multiply(). Samotná multiply() se nazývá další metoda „valueOf“, kde je poskytnut objekt „i“ smyčky for. Příkaz return poskytne větší faktoriál. Dále jsme vytvořili metodu main() programu. Inicializovali jsme objekt „Num“ s hodnotou a vytiskli faktoriál „Num“ z metody factorial().

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

Příklad 3:

Funkce bitCount() třídy BigInteger počítá bity. Metoda bitCount() poskytuje počet bitů, které jsou v tomto BigInteger ve formě dvou doplňků a liší se od znaménkového bitu. Tato metoda vrací nastavené bity, když je hodnota BigInteger kladná. Na druhou stranu, pokud je BigInteger zadáno se zápornou hodnotou, tato metoda vrátí počet resetovaných bitů.


Deklarovali jsme dvě proměnné, „b1“ a „b2“ třídy typu „BigInteger“. Také jsme definovali dvě další proměnné, „integer1“ a „integer2“, int primitivní typ. Po deklaraci jsme inicializovali „b1“ kladnou hodnotou BigInteger a „b2“ zápornou hodnotou BigInteger. Dále jsme pomocí metody bitCount() přiřadili „integer1“ a „integer2“ proměnným BigInteger „b1“ a „b2“. Počítané bity budou získány z metody bitCount() pro zadané hodnoty BigInteger.

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

Příklad 4:

Absolutní hodnotu velkých číselných dat v BigInteger lze určit pomocí metody abs() třídy BigInteger. Metoda abs() vrací absolutní hodnotu BigInteger.


Máme třídu BigInteger, ze které jsme deklarovali čtyři proměnné: „big1“, „big2“, „big3“ a „big4“. Proměnné „big1“ a „big2“ jsou specifikovány s kladnými a zápornými hodnotami. Poté jsme vyvolali metodu abs() s „big1“ a „big2“ v proměnných „big3“ a „big4“. Všimněte si, že metoda abs() nepřebírá žádnou vstupní hodnotu, ale je volána s proměnnými „big1“ a „big2“. Metoda abs() získá absolutní hodnotu pro tyto proměnné BigInteger a výsledky budou vytištěny v době kompilace.

Absolutní hodnota kladných hodnot 432 a záporných 432 je stejná, protože metoda abs() vždy vrací kladnou absolutní hodnotu.

Příklad 5:

Porovnání hodnot BigInteger lze dosáhnout pomocí metody BigInteger CompareTo(). BigInteger se porovnává s BigInteger, který je zadán jako parametr v rámci metody CompareTo(). Vrácená hodnota metody CompareTo() je založena na hodnotách BigInteger. Když je porovnání hodnoty BigInteger rovno, vrátí se nula. V opačném případě jsou vráceny „1“ a „-1“ za podmínky, že hodnota BigInteger je větší nebo menší než hodnota BigInteger předaná jako argument.


Máme deklaraci objektů „MyBigInt1“ a „MyBigtInt2“ třídy „BigInteger“. Tyto objekty jsou pak specifikovány se stejnými hodnotami BigInteger. Poté jsme vytvořili další objekt, „comparevalue“, kde je objekt „MyBigInt1“ volán pomocí metody CompareTo() a objekt „MyBigInt2“ je předán jako argument pro porovnání s objektem „MyBigInt2“. Dále máme příkaz if-else, kde jsme zkontrolovali, zda se výsledky metody CompareTo() rovnají hodnotě „0“ nebo ne.

Protože oba objekty BigInteger mají stejné hodnoty, výsledky CompareTo() vrátí nulu, jak ukazuje obrázek níže.

Příklad 6:

Metodu BigInteger flipBit(index) lze také použít k překlopení na určitém místě bitu v rámci BigInteger. Tato metoda vyhodnocuje (bigInt ^ (1<


Definovali jsme dvě proměnné BigInteger, „B_val1“ a „B_val2“. Proměnná „B_val1“ je inicializována třídou BigInteger, kde je uvedena hodnota. Poté jsme pomocí metody flipBit() nastavili proměnnou „B_val2“, kde se operace flipBit provádí na proměnné „B_value“ s hodnotou indexu „2“.

Pozice indexu hodnoty BigInteger „9“ se překlopí s indexem „2“, který na výstupu vydá hodnotu „13“.

Závěr

Třída BigInteger se velmi pohodlně používá a díky své rozsáhlé knihovně metod se často používá v konkurenčním programování. BigInteger se používá pro výpočet velmi dlouhých čísel, která přesahují kapacitu všech aktuálně dostupných primitivních datových typů. Poskytuje různé metody pro modulární aritmetické operace. Nejprve jsme vytvořili BigInteger a poté jsme pokryli několik jeho metod.