Hva er en BigInteger Class?
Det er noen primitive datatyper i Java som brukes, for eksempel int eller long, for å utføre heltallsoperasjoner. Noen ganger må vi imidlertid lagre store tall utenfor omfanget av slike primitive datatyper. BigInteger Class brukes til matematiske beregninger for svært store tall. Den gir alle metoder fra java.lang.Math -pakken og analoger til alle Javas primitive heltallsoperatorer. Stort heltallKlasse dekker operasjoner for modulær aritmetikk, bitmanipulering, GCD-beregning og noen få andre operasjoner. Store heltall er representert i to-komplement-notasjon. Det er ingen teoretisk grense for hvor stort antall som kan lagres fordi minnet er tildelt dynamisk. Imidlertid er praktisk talt minnet begrenset, og vi kan lagre et heltall som har antall biter mindre enn eller lik Integer.MAX_VALUE . Dette gir en tilstrekkelig stor øvre grense til å lagre praktisk talt alle store tall.Hvordan implementeres BigInteger-klassen?
import java.math.BigInteger;
For å implementere BigInteger- klassen i koden din, må du importere java.math.BigInteger- pakken.
BigInteger Class Declaration
BigInteger - klassen i Java er deklarert på følgende måte i java.math -pakken:public class BigInteger
extends Number
implements Comparable<BigInteger>
BigInteger - klassen utvider Number- klassen og implementerer et Comparable -grensesnitt. Det er deklarert og definert i java.math -pakken.
Klasse konstruktører
Javas BigInteger Class har mange overbelastede konstruktører. Du kan prøve å kjøre hver i editoren for å se hvordan de fungerer.Sr# | Konstruktør | Beskrivelse |
---|---|---|
1 | BigInteger(byte[] val) | Oversetter en byte-array til et BigInteger . |
2 | Stort heltall(int signum, byte[] størrelse) | Oversetter tegnstørrelsesrepresentasjon til et stort heltall . |
3 | BigInteger(int bitLength, int sikkerhet, tilfeldig rnd) | Konstruerer et tilfeldig generert positivt stort heltall av den angitte lengden. |
4 | Stort heltall (strengverdi) | Oversetter desimalstrengrepresentasjon til et stort heltall . |
5 | BigInteger(strengverdi, int radix) | Konverterer strengrepresentasjonen i den angitte radiksen til et stort heltall . |
Klassemetoder
Javas BigInteger- klasse har mange metoder, hvorav noen er beskrevet nedenfor. I tabellen representerer 'dette' BigInteger som kaller metoden og ' val ' er argumentet som sendes til metoden.abs() | Den returnerer den absolutte verdien av " dette " BigInteger . |
Legg til() | Den returnerer et stort heltall ved å beregne ' this + val '. |
trekke fra() | Den returnerer et stort heltall ved å beregne " dette - verdi ". |
dele opp() | Den returnerer et stort heltall ved å beregne ' dette / val '. |
multiplisere() | Den returnerer et stort heltall ved å beregne ' denne * val '. |
verdien av() | Den returnerer en BigInteger- verdi på gitt long . |
er lik() | Den sammenligner likhet mellom ' dette ' BigInteger og et gitt objekt. |
pow() | Den returnerer et stort heltall ved å beregne ' denne eksponent '. |
min() | Den returnerer minimum mellom ' dette ' BigInteger og den gitte verdien. |
maks() | Den returnerer maksimum mellom ' dette ' BigInteger og den gitte verdien. |
mod() | Den returnerer en verdi for ' denne mod m '. |
gcd() | Den returnerer et stort heltall som er den største felles divisoren mellom den absolutte verdien av " dette " og " bestått verdi ". |
bitCount() | Den returnerer antall biter i to-komplement-representasjonen av " dette " BigInteger . |
bitLength() | Den returnerer antall biter, unntatt fortegnsbiten, i den minimale to-komplement-representasjonen av " dette " BigInteger . |
og() | Den returnerer et stort heltall ved å beregne " dette og val ". |
eller() | Den returnerer et stort heltall ved å beregne ' denne | val '. |
ikke() | Den returnerer et stort heltall ved å beregne ' ~dette'. |
og ikke() | Den returnerer et stort heltall ved å beregne ' dette & ~val '. |
intValue() | Den konverterer BigInteger til en int . |
floatValue() | Den konverterer BigInteger til flytende . |
longValue() | Den konverterer BigInteger til long . |
doubleValue() | Den konverterer BigInteger til dobbel . |
toString() | Den returnerer desimalstrengrepresentasjonen av BigInteger . |
Eksempel 1
import java.math.BigInteger;
public class Example1 {
static BigInteger calculateFactorial(int val) {
// Initialize result
BigInteger f = BigInteger.ONE; // Or new BigInteger("1")
// compute factorial
for (int i = 2; i <= val; i++) {
f = f.multiply(BigInteger.valueOf(i));
}
return f;
}
// Driver method
public static void main(String[] args) {
int val = 25;
System.out.println(calculateFactorial(val));
}
}
Produksjon
155112100433330985984000000
Forklaring
I utdraget ovenfor beregnes faktoren til et stort tall ved å bruke BigInteger Class ved å importere java.math.BigInteger -pakken. Vi har laget en calculateFactorial metode. Denne metoden oppretter et BigInteger og beregner deretter faktorialet ved å bruke multiplikasjonsmetoden f.multiply(BigInteger.valueOf(i)) .Eksempel 2
import java.math.BigInteger;
public class Example2 {
public static void main(String[] args) {
BigInteger big1 = new BigInteger("20");
BigInteger big2 = new BigInteger("60");
BigInteger sub = big2.subtract(big1);
System.out.println(big2 + " - " + big1 + " = " + sub);
BigInteger add = big1.add(big2);
System.out.println(big1 + " + " + big2 + " = " + add);
BigInteger mul = big1.multiply(big2);
System.out.println(big1 + " * " + big2 + " = " + mul);
BigInteger div = big2.divide(big1);
System.out.println(big2 + " / " + big1 + " = " + div);
BigInteger min = big1.min(big2);
System.out.println("min value: " + min);
BigInteger max = big1.max(big2);
System.out.println("max value: " + max);
}
}
Produksjon
60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 min verdi: 20 maks verdi: 60
Forklaring
I utdraget ovenfor har vi laget to BigInteger -er ved å bruke BigInteger(String val) -konstruktøren. Vi brukte forskjellige metoder på BigInteger s big1 og big2 med verdiene henholdsvis 20 og 60. Vi brukte følgende metoder:- big2.subtract(big1) for å trekke 20 fra 60.
- big1.add(big2) for å legge til 20 og 60.
- big1.multiply(big2) for å multiplisere 20 og 60.
- big2.divide(big1) for å dele 60 på 20.
- big1.min(big2) for å få den minste av de to verdiene.
- big1.max(big2) for å få den største av de to verdiene.