Java BigInteger

Java Biginteger



Java pakub spetsiaalset BigInteger klassi ülisuurte numbrite haldamiseks, mis on suuremad kui 64-bitised numbrid. Täisarvu väärtuste suurust, mida see klass suudab hallata, piirab lihtsalt JVM-i eraldatud mälu. Klass BigInteger, mis pärib numbri Number., rakendab liidest Comparable. See annab ekvivalendid igale Java primitiivsele täisarvu operaatorile ja igale mooduli java.lang.math meetodile. BigIntegeri objekti salvestatud väärtust ei saa BigIntegeri klassi muutumatuse tõttu muuta.

Näide 1:

Järgmine programm pakub viisi BigIntegeri loomiseks javas ja rakendab aritmeetilise toimingu esitatud BigIntegeri väärtusele.








Oleme importinud programmi sees olevast java matemaatikapaketist BigIntegeri klassi. Pärast seda deklareerisime BigIntegeri objektid 'bigInt1' ja 'bigInt2' java klassi 'BigIntegerExample' meetodis main(). Järgmisena initsialiseerisime BigIntegeri objektid suurte arvväärtustega klassis BigInteger. Oleme loonud teise BigInteger klassi objekti, et sooritada aritmeetiline tehte määratud suure täisarvu väärtusega. Objektid deklareeritakse kui 'Korrutamine' BinInteger väärtuse korrutamiseks ja 'Jagamine' BigInteger väärtuse jagamiseks.



Seejärel määrasime objektile 'multiply' koos BigIntegeri korrutamismeetodiga 'bigInt1', mis võtab sisendi 'bigInt2'. Samuti oleme kutsunud meetodi division(), mis võtab parameetri 'bigInt2', mis jagatakse 'bigInt1'-ga, ja prindib tulemused pärast täitmist.



BigIntegeri väärtuste korrutamise ja jagamise tulemused on näidatud järgmisel väljundpildil. Nii konfigureeritakse BigInteger javas ja seda kasutatakse erinevate toimingute jaoks.





Näide 2:

Faktoriaalne arvutamine on hea näide sellest, et täisarv saab väga suuri sisendeid. BigIntegeri saab kasutada ka suuremate täisarvude väärtuste faktoriaali saamiseks.




Oleme loonud klassi BigInteger funktsiooni 'faktoriaal', kus int tüüpi objekt 'num' edastatakse argumendina väärtuse 'Num' faktoriaali tagastamiseks. Funktsiooni 'Factoriaal' sees oleme deklareerinud BigIntegeri objekti 'max_fict', kus on määratud BigIntegeri väärtus '2'. Pärast seda juurutasime for-loopi, mis kordab ja korrutab seejärel väärtuse „max_fict” 4, 5 ja kuni n-nda väärtuseni, kui käivitatakse korrutamismeetod. Korrutamist () ennast nimetatakse veel üheks 'valueOf'-meetodiks, kus on ette nähtud for-tsükli objekt 'i'. Tagastuslause annab suurema faktoriaali. Järgmiseks oleme loonud programmi main() meetodi. Initsialiseerisime objekti 'Num' väärtusega ja printisime faktoriaali() meetodist 'Num' faktoriaali.

Arvu 40 faktoriaalväärtus annab BigIntegeri väärtuse järgmiselt:

Näide 3:

BigInteger klassi funktsioon bitCount() loeb bitte. Meetod bitCount() annab bittide arvu, mis on selles BigIntegeris kahe täienduse kujul ja erinevad märgibitist. See meetod tagastab määratud bitid, kui BigIntegeri väärtus on positiivne. Teisest küljest, kui BigInteger on määratud negatiivse väärtusega, tagastab see meetod lähtestamisbittide arvu.


Oleme deklareerinud kaks muutujat 'b1' ja 'b2' tüübiklassist 'BigInteger'. Samuti oleme määratlenud veel kaks muutujat, 'täisarv1' ja 'täisarv2', int primitiivne tüüp. Pärast deklaratsiooni initsialiseerisime 'b1' positiivse BigInteger väärtusega ja 'b2' negatiivse BigInteger väärtusega. Järgmisena määrasime BigIntegeri muutujatele 'b1' ja 'b2' bitCount() meetodiga 'täisarv1' ja 'täisarv2'. Loendatud bitid saadakse määratud BigIntegeri väärtuste jaoks meetodist bitCount().

Positiivne BigInteger annab '2' bitti ja BigIntegeri negatiivne väärtus väljastab '1' biti väärtuse.

Näide 4:

Suuremahuliste arvandmete absoluutväärtust BigIntegeris saab määrata BigIntegeri klassi meetodi abs() abil. Meetod abs() tagastab BigIntegeri absoluutväärtuse.


Meil on BigInteger klass, millest oleme deklareerinud neli muutujat: “big1”, “big2”, “big3” ja “big4”. Muutujad “big1” ja “big2” on määratud vastavalt positiivsete ja negatiivsete väärtustega. Pärast seda kasutasime muutujates 'big3' ja 'big4' meetodi abs() 'big1' ja 'big2'. Pange tähele, et meetod abs() ei võta sisendväärtust, vaid seda kutsutakse välja muutujatega 'big1' ja 'big2'. Meetod abs() saab nende BigIntegeri muutujate absoluutväärtuse ja tulemused prinditakse kompileerimise ajal.

Positiivsete 432 ja negatiivsete 432 väärtuste absoluutväärtus on sama, kuna meetod abs() tagastab alati positiivse absoluutväärtuse.

Näide 5:

BigIntegeri väärtusi saab võrrelda meetodi BigInteger võrdlusTo() abil. Suurtäisarvu võrreldakse BigIntegeriga, mis sisestatakse parameetrina võrdlemise meetodis. CompleteTo() meetodi tagastusväärtus põhineb BigIntegeri väärtustel. Kui BigIntegeri väärtuse võrdlus on võrdne, tagastatakse null. Vastasel juhul tagastatakse '1' ja '-1' tingimusel, et BigInteger väärtus on suurem või väiksem kui argumendina esitatud BigInteger väärtus.


Meil on objektid 'MyBigInt1' ja 'MyBigtInt2' klassist 'BigInteger'. Need objektid määratakse seejärel samade BigIntegeri väärtustega. Pärast seda lõime teise objekti, 'võrdlusväärtus', kus 'MyBigInt1' objekti kutsutakse võrdlemise meetodiga ja objekt 'MyBigInt2' edastatakse argumendina, mida võrrelda objektiga 'MyBigInt2'. Järgmiseks on meil if-else lause, kus oleme kontrollinud, kas võrdleTo() meetodi tulemused on võrdsed väärtusega “0” või mitte.

Kuna mõlemal BigIntegeri objektil on samad väärtused, tagastavad võrdlusTo() tulemused nulli, nagu on näidatud alloleval pildil.

Näide 6:

BigIntegeri flipBit(index) meetodit saab kasutada ka BigIntegeri teatud bitikoha ümberpööramiseks. See meetod hindab (bigInt ^ (1<


Oleme määratlenud kaks BigIntegeri muutujat, 'B_val1' ja 'B_val2'. Muutuja “B_val1” initsialiseeritakse klassiga BigInteger, kus väärtus määratakse. Seejärel oleme määranud muutuja 'B_val2' meetodiga flipBit(), kus flipBit tehakse muutujaga 'B_value' indeksi väärtusega '2'.

BigIntegeri väärtuse “9” indeksi asukoht pööratakse ümber indeksiga “2”, mis väljastab väljundis väärtuse “13”.

Järeldus

BigIntegeri klassi on väga mugav kasutada ja seda kasutatakse sageli konkureerivas programmeerimises tänu oma tohutule meetoditeekile. BigIntegerit kasutatakse väga pikkade arvude arvutamiseks, mis ületavad kõigi praegu juurdepääsetavate primitiivsete andmetüüpide mahtu. See pakub erinevaid meetodeid modulaarsete aritmeetiliste toimingute jaoks. Esmalt lõime BigIntegeri ja seejärel käsitlesime mõnda selle meetodit.