Java BigInteger

Java Biginteger



Java tarjoaa erityisen BigInteger-luokan erittäin suurten numeroiden hallintaan, jotka ovat suurempia kuin 64-bittiset numerot. Tämän luokan käsittelemien kokonaislukuarvojen kokoa rajoittaa yksinkertaisesti JVM:n varattu muisti. BigInteger-luokka, joka perii numeron. Toteuttaa Comparable-liittymän. Se antaa vastineet jokaiselle Java-alkuperäiselle kokonaislukuoperaattorille sekä jokaiselle java.lang.math-moduulin menetelmälle. BigInteger-objektin tallennettua arvoa ei voi muuttaa BigInteger-luokan muuttumattomuuden vuoksi.

Esimerkki 1:

Seuraava ohjelma tarjoaa tavan luoda BigInteger javassa ja käyttää aritmeettista operaatiota annettuun BigInteger-arvoon.








Olemme tuoneet BigInteger-luokan ohjelman sisällä olevasta java-matematiikan paketista. Sen jälkeen määritimme BigInteger-objektit 'bigInt1' ja 'bigInt2' java-luokan 'BigIntegerExample' main()-metodissa. Seuraavaksi alustimme BigInteger-objektit BigInteger-luokan suurilla numeerisilla arvoilla. Olemme luoneet toisen BigInteger-luokan objektin aritmeettisen toiminnon suorittamiseksi määritetylle suurelle kokonaislukuarvolle. Objektit määritetään 'kertoiksi' BinInteger-arvon kertomiseksi ja 'jakoiksi' BigInteger-arvon jakamiseksi.



Sitten määritimme 'bigInt1':n ja BigIntegerin multiply()-menetelmän objektille 'multiply', joka ottaa syötteen 'bigInt2'. Olemme myös kutsuneet division()-menetelmää, joka ottaa parametrin 'bigInt2', joka jaetaan 'bigInt1':llä, ja tulostaa tulokset suorituksen jälkeen.



BigInteger-arvojen kerto- ja jakolaskutulokset näkyvät seuraavassa tuloskuvassa. Näin BigInteger konfiguroidaan javassa ja sitä käytetään erilaisiin toimintoihin.





Esimerkki 2:

Factoriaalinen laskenta on hyvä esimerkki kokonaisluvusta, joka saa erittäin suuria syötteitä. BigIntegeriä voidaan käyttää myös suurten kokonaislukuarvojen kertoimen saamiseksi.




Olemme luoneet BigInteger-luokan 'factorial'-funktion, jossa int-tyyppinen 'num'-objekti välitetään argumenttina palauttaakseen arvon 'Num'. Factorial-funktion sisällä olemme ilmoittaneet BigInteger-objektin 'max_fict', jossa BigInteger-arvo '2' on määritetty. Tämän jälkeen otimme käyttöön for-silmukan, joka toistaa ja kertoo sitten 'max_fict'-arvon 4:llä, 5:llä ja n:nnen arvon asti, kun multiply()-menetelmää vedetään. Itse kertomaa () kutsutaan toiseksi 'valueOf'-menetelmäksi, jossa for-silmukan objekti 'i' on annettu. Paluulause antaa suuremman faktoriaalin. Seuraavaksi olemme määrittäneet ohjelman main()-menetelmän. Alusimme objektin 'Num' arvolla ja tulostimme 'Num' faktoriaalin factorial()-menetelmästä.

Numeron '40' tekijäarvo antaa BigInteger-arvon seuraavasti:

Esimerkki 3:

BigInteger-luokan bitCount()-funktio laskee bitit. BitCount()-menetelmä tarjoaa bittien määrän, jotka ovat kahden komplementin muodossa tässä BigIntegerissä ja eroavat etumerkkibitistä. Tämä menetelmä palauttaa asetetut bitit, kun BigIntegerin arvo on positiivinen. Toisaalta, jos BigInteger on määritetty negatiivisella arvolla, tämä menetelmä palauttaa nollausbittien määrän.


Olemme ilmoittaneet kaksi muuttujaa, 'b1' ja 'b2', tyyppiluokan 'BigInteger'. Olemme myös määrittäneet kaksi muuta muuttujaa, 'kokonaisluku1' ja 'kokonaisluku2', int primitiivinen tyyppi. Ilmoituksen jälkeen alustimme 'b1':n positiivisella BigInteger-arvolla ja 'b2':n negatiivisella BigInteger-arvolla. Seuraavaksi olemme määrittäneet 'kokonaisluku1' ja 'kokonaisluku2' bitCount()-metodilla BigInteger-muuttujille 'b1' ja 'b2'. Lasketut bitit saadaan bitCount()-menetelmästä määritetyille BigInteger-arvoille.

Positiivinen BigInteger tarjoaa '2' bittiä ja BigIntegerin negatiivinen arvo tuottaa '1' bittiarvon.

Esimerkki 4:

BigIntegerin suurikokoisten numeeristen tietojen itseisarvo voidaan määrittää BigInteger-luokan abs()-menetelmällä. Metodi abs() palauttaa BigIntegerin itseisarvon.


Meillä on BigInteger-luokka, josta olemme ilmoittaneet neljä muuttujaa: 'big1', 'big2', 'big3' ja 'big4'. Muuttujat 'big1' ja 'big2' määritetään positiivisilla ja negatiivisilla arvoilla, vastaavasti. Tämän jälkeen käynnistimme abs()-menetelmän 'big1' ja 'big2' muuttujissa 'big3' ja 'big4'. Huomaa, että abs()-menetelmä ei ota mitään syöttöarvoa, vaan sitä kutsutaan muuttujilla 'big1' ja 'big2'. Abs()-menetelmä saa näiden BigInteger-muuttujien absoluuttisen arvon, ja tulokset tulostetaan käännöshetkellä.

Positiivisten 432 ja negatiivisten 432 arvojen itseisarvo on sama, koska abs()-menetelmä palauttaa aina positiivisen itseisarvon.

Esimerkki 5:

BigInteger-arvojen vertailu voidaan saavuttaa käyttämällä BigInteger vertailuTo() -menetelmää. BigIntegeriä verrataan BigIntegeriin, joka syötetään parametrina vertailuTo()-metodissa. CompleteTo()-metodin palautusarvo perustuu BigInteger-arvoihin. Kun BigInteger-arvon vertailu on yhtä suuri, palautetaan nolla. Muussa tapauksessa '1' ja '-1' palautetaan sillä ehdolla, että BigInteger-arvo on suurempi tai pienempi kuin argumenttina annettu BigInteger-arvo.


Meillä on objektit 'MyBigInt1' ja 'MyBigtInt2' luokassa 'BigInteger'. Nämä objektit määritetään sitten samoilla BigInteger-arvoilla. Tämän jälkeen loimme toisen objektin, 'comparevalue', jossa 'MyBigInt1'-objektia kutsutaan vertaillaTo()-metodilla ja 'MyBigInt2'-objekti välitetään argumenttina, jota voidaan verrata 'MyBigInt2'-objektiin. Seuraavaksi meillä on if-else-lause, jossa olemme tarkistaneet, ovatko vertailuTo()-metodin tulokset yhtä suuria kuin arvo '0' vai eivät.

Koska molemmilla BigInteger-objekteilla on samat arvot, vertailuTo()-tulokset palauttavat nollan, kuten alla olevassa kuvassa näkyy.

Esimerkki 6:

BigInteger flipBit(index) -menetelmää voidaan käyttää myös kääntämään tietyssä bittipaikassa BigIntegerissä. Tämä menetelmä arvioi (bigInt ^ (1<


Olemme määrittäneet kaksi BigInteger-muuttujaa, 'B_val1' ja 'B_val2'. Muuttuja “B_val1” alustetaan BigInteger-luokassa, jossa arvo määritetään. Sitten olemme asettaneet muuttujan 'B_val2' flipBit()-metodilla, jossa flipBit-toiminto suoritetaan muuttujalle 'B_value', jonka indeksiarvo on '2'.

BigInteger-arvon '9' indeksipaikka käännetään indeksillä '2', joka tulostaa arvon '13'.

Johtopäätös

BigInteger-luokka on erittäin kätevä käyttää ja sitä käytetään usein kilpailevassa ohjelmoinnissa sen laajan menetelmäkirjaston ansiosta. BigIntegeriä käytetään erittäin pitkien lukujen laskemiseen, jotka ylittävät kaikkien tällä hetkellä käytettävissä olevien primitiivisten tietotyyppien kapasiteetin. Se tarjoaa erilaisia ​​​​menetelmiä modulaarisille aritmeettisille operaatioille. Loimme ensin BigIntegerin ja käsittelimme sitten muutamia sen menetelmiä.