CodeGym /Java blog /Tilfældig /Java BigInteger klasse
John Squirrels
Niveau
San Francisco

Java BigInteger klasse

Udgivet i gruppen

Hvad er en BigInteger Class?

Der er nogle primitive datatyper i Java, der bruges, såsom int eller long, til at udføre heltalsoperationer. Men nogle gange er vi nødt til at gemme store tal uden for omfanget af sådanne primitive datatyper. BigInteger Class bruges til matematiske beregninger for meget store tal. Det giver alle metoder fra java.lang.Math -pakken og analoger til alle Javas primitive heltalsoperatorer. Stort heltalKlasse dækker operationer til modulær aritmetik, bitmanipulation, GCD-beregning og et par andre operationer. Store heltal er repræsenteret i to-komplement-notation. Der er ingen teoretisk grænse for, hvor stort et tal der kan lagres, fordi hukommelsen er tildelt dynamisk. Men praktisk talt er hukommelsen begrænset, og vi kan gemme et heltal, der har antallet af bit mindre end eller lig med Integer.MAX_VALUE . Dette giver en tilstrækkelig stor øvre grænse til at lagre stort set alle store tal.

Hvordan implementeres BigInteger Class?


import java.math.BigInteger;
For at implementere BigInteger- klassen i din kode, skal du importere java.math.BigInteger- pakken.

BigInteger Class Declaration

BigInteger - klassen i Java erklæres på følgende måde i java.math -pakken:

public class BigInteger
   extends Number
      implements Comparable<BigInteger>
BigInteger - klassen udvider Number- klassen og implementerer en sammenlignelig grænseflade. Det er deklareret og defineret i pakken java.math .

Klasseskonstruktører

Javas BigInteger Class har mange overbelastede konstruktører. Du kan prøve at køre hver i editoren for at se, hvordan de fungerer.
Sr# Konstruktør Beskrivelse
1 BigInteger(byte[] val) Oversætter et byte-array til et BigInteger .
2 BigInteger(int signum, byte[] størrelse) Oversætter fortegnsstørrelsesrepræsentation til et stort heltal .
3 BigInteger(int bitLængde, int sikkerhed, Random rnd) Konstruerer et tilfældigt genereret positivt BigInteger af den angivne længde.
4 BigInteger (strengværdi) Oversætter decimalstrengrepræsentation til et stort heltal .
5 BigInteger(strengværdi, int radix) Konverterer String- repræsentationen i den angivne radix til et BigInteger .

Klasse metoder

Javas BigInteger- klasse har mange metoder, hvoraf nogle er beskrevet nedenfor. I tabellen repræsenterer 'dette' det BigInteger , der kalder metoden, og ' val ' er argumentet videregivet til metoden.
abs() Det returnerer den absolutte værdi af ' dette ' BigInteger .
tilføje() Det returnerer et stort heltal ved at beregne ' this + val '.
trække fra() Det returnerer et stort heltal ved at beregne ' dette - værdi '.
dele() Det returnerer et stort heltal ved at beregne ' dette / val '.
formere sig() Det returnerer et stort heltal ved at beregne ' this * val '.
Værdi af() Det returnerer en BigInteger værdi af givet long .
lige med() Den sammenligner lighed mellem ' dette ' BigInteger og et givet objekt.
pow() Det returnerer et stort heltal ved at beregne ' denneeksponent '.
min() Det returnerer minimum mellem ' dette ' BigInteger og den givne værdi.
max() Det returnerer maksimum mellem ' dette ' BigInteger og den givne værdi.
mod() Det returnerer en værdi for ' denne mod m '.
gcd() Det returnerer et stort heltal , der er den største fælles divisor mellem den absolutte værdi af ' denne ' og ' bestået værdi '.
bitCount() Det returnerer antallet af bits i to's-komplement-repræsentationen af ​​' dette ' BigInteger .
bitLength() Det returnerer antallet af bits, eksklusive fortegnsbitten, i den minimale to-komplement-repræsentation af ' dette ' BigInteger .
og() Det returnerer et stort heltal ved at beregne ' dette & val '.
eller() Det returnerer et stort heltal ved at beregne ' denne | val '.
ikke() Det returnerer et stort heltal ved at beregne ' ~dette'.
og ikke() Det returnerer et stort heltal ved at beregne ' dette & ~val '.
intValue() Det konverterer BigInteger til en int .
floatValue() Det konverterer BigInteger til float .
longValue() Det konverterer BigInteger til long .
doubleValue() Det konverterer BigInteger til det dobbelte .
toString() Det returnerer decimalstrengrepræsentationen af ​​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));
    }
}

Produktion

15511210043330985984000000

Forklaring

I uddraget ovenfor beregnes faktoren for et stort tal ved hjælp af BigInteger Class ved at importere java.math.BigInteger -pakken. Vi har lavet en calculateFactorial metode. Denne metode opretter et BigInteger og beregner derefter faktortallet ved at bruge multiplikationsmetoden 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);
    }
}

Produktion

60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 min værdi: 20 max værdi: 60

Forklaring

I uddraget ovenfor har vi lavet to BigInteger s ved hjælp af BigInteger(String val) konstruktøren. Vi anvendte forskellige metoder på BigInteger s big1 og big2 med værdierne henholdsvis 20 og 60. Vi anvendte følgende metoder:
  1. big2.subtract(big1) for at trække 20 fra 60.
  2. big1.add(big2) for at tilføje 20 og 60.
  3. big1.multiply(big2) for at gange 20 og 60.
  4. big2.divide(big1) for at dividere 60 med 20.
  5. big1.min(big2) for at få den mindste af de to værdier.
  6. big1.max(big2) for at få den største af de to værdier.
Det er vigtigt at bemærke, at java.math.BigInteger er importeret øverst i koden.

Konklusion

Nu burde du være bekendt med BigInteger Class i Java. Du bør være i stand til at bruge BigInteger s i din kode ved hjælp af forskellige typer konstruktører. Du bør også være i stand til at udføre forskellige aritmetiske og logiske operationer på dem ved at bruge BigInteger Class-metoder. Som en udfordring kan du prøve at kalde forskellige metoder med forskellige værdier af BigInteger s. Det vil yderligere styrke din forståelse af BigInteger s i Java. For at være mere sikker på din læring, prøv at øve den igen og igen. Nøglen til god kodning er øvelse. Held og lykke og god kodning!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION