CodeGym /Java blogg /Slumpmässig /Java BigInteger Class
John Squirrels
Nivå
San Francisco

Java BigInteger Class

Publicerad i gruppen

Vad är en BigInteger Class?

Det finns vissa primitiva datatyper i Java som används, till exempel int eller long, för att utföra heltalsoperationer. Men ibland behöver vi lagra stora antal utanför räckvidden för sådana primitiva datatyper. BigInteger Class används för matematiska beräkningar för mycket stora tal. Den tillhandahåller alla metoder från java.lang.Math- paketet och analoger till alla Javas primitiva heltalsoperatorer. Stort heltalKlass täcker operationer för modulär aritmetik, bitmanipulation, GCD-beräkning och några andra operationer. Stora heltal representeras i två-komplement-notation. Det finns ingen teoretisk gräns för hur stort antal som kan lagras eftersom minnet allokeras dynamiskt. Men praktiskt taget är minnet begränsat och vi kan lagra ett heltal som har antalet bitar mindre än eller lika med heltal.MAX_VALUE . Detta ger en tillräckligt stor övre gräns för att lagra praktiskt taget alla stora tal.

Hur implementeras BigInteger Class?


import java.math.BigInteger;
För att implementera BigInteger- klassen i din kod måste du importera java.math.BigInteger -paketet.

BigInteger Class Declaration

Klassen BigInteger i Java deklareras på följande sätt i paketet java.math :

public class BigInteger
   extends Number
      implements Comparable<BigInteger>
Klassen BigInteger utökar Number- klassen och implementerar ett Comparable -gränssnitt. Det deklareras och definieras i paketet java.math .

Klasskonstruktörer

Javas BigInteger Class har många överbelastade konstruktörer. Du kan försöka köra var och en i editorn för att se hur de fungerar.
Sr# Konstruktör Beskrivning
1 BigInteger(byte[] val) Översätter en byte-array till ett BigInteger .
2 BigInteger(int signum, byte[] magnitud) Översätter teckenstorleksrepresentation till ett BigInteger .
3 BigInteger(int bitLength, int säkerhet, Random rnd) Konstruerar ett slumpmässigt genererat positivt BigInteger av angiven längd.
4 BigInteger(String Val) Översätter representation av decimalsträngar till ett stort heltal .
5 BigInteger(String val, int radix) Konverterar String -representationen i den angivna radixen till ett BigInteger .

Klassmetoder

Javas BigInteger- klass har många metoder, av vilka några beskrivs nedan. I tabellen representerar 'detta' det BigInteger som anropar metoden och ' val ' är argumentet som skickas till metoden.
magmuskler() Den returnerar det absoluta värdet av " detta " BigInteger .
Lägg till() Den returnerar ett stort heltal genom att beräkna ' this + val '.
subtrahera() Den returnerar ett stort heltal genom att beräkna ' detta - värde '.
dela upp() Den returnerar ett stort heltal genom att beräkna ' detta / val '.
multiplicera() Den returnerar ett stort heltal genom att beräkna ' this * val '.
värdet av() Det returnerar ett BigInteger- värde av given long .
lika() Den jämför likheten mellan ' detta ' BigInteger och ett givet objekt.
pow() Den returnerar ett stort heltal genom att beräkna ' dennaexponent '.
min() Den returnerar minimum mellan ' detta ' BigInteger och det givna värdet.
max() Den returnerar maxvärdet mellan ' detta ' BigInteger och det givna värdet.
mod() Den returnerar ett värde för ' denna mod m '.
gcd() Det returnerar ett BigInteger som är den största gemensamma delaren mellan det absoluta värdet av ' detta ' och ' passerat värde ' .
bitCount() Den returnerar antalet bitar i tvåkomplementrepresentationen av ' detta ' BigInteger .
bitLength() Den returnerar antalet bitar, exklusive teckenbiten, i den minimala två-komplementrepresentationen av ' detta ' BigInteger .
och() Den returnerar ett stort heltal genom att beräkna ' detta & val '.
eller() Den returnerar ett stort heltal genom att beräkna ' detta | val '.
inte() Den returnerar ett stort heltal genom att beräkna ' ~detta'.
och inte() Den returnerar ett stort heltal genom att beräkna ' detta & ~val '.
intValue() Den konverterar BigInteger till en int .
floatValue() Den konverterar BigInteger till float .
longValue() Det konverterar BigInteger till long .
doubleValue() Det konverterar BigInteger till dubbelt .
att stränga() Den returnerar decimalsträngsrepresentationen av BigInteger .

Exempel 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

155112100433330985984000000

Förklaring

I utdraget ovan beräknas faktorn för ett stort antal med hjälp av BigInteger Class genom att importera java.math.BigInteger -paketet. Vi har skapat en calculateFactorial -metod. Den här metoden skapar ett BigInteger och beräknar sedan faktortalet med hjälp av multiplikationsmetoden f.multiply(BigInteger.valueOf(i)) .

Exempel 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ärde: 20 maxvärde: 60

Förklaring

I utdraget ovan har vi gjort två BigInteger med hjälp av BigInteger(String val) -konstruktorn. Vi tillämpade olika metoder på BigInteger s big1 och big2 med värdena 20 respektive 60. Vi tillämpade följande metoder:
  1. big2.subtract(big1) för att subtrahera 20 från 60.
  2. big1.add(big2) för att lägga till 20 och 60.
  3. big1.multiply(big2) för att multiplicera 20 och 60.
  4. big2.divide(big1) för att dividera 60 med 20.
  5. big1.min(big2) för att få det minsta av de två värdena.
  6. big1.max(big2) för att få det största av de två värdena.
Det är viktigt att notera att java.math.BigInteger importeras överst i koden.

Slutsats

Vid det här laget bör du vara bekant med BigInteger Class i Java. Du bör kunna använda BigInteger s i din kod med olika typer av konstruktorer. Du bör också kunna utföra olika aritmetiska och logiska operationer på dem genom att använda BigInteger Class-metoder. Som en utmaning kan du prova att anropa olika metoder med olika värden på BigInteger s. Det kommer att ytterligare stärka din förståelse av BigInteger s i Java. För att bli mer säker på din inlärning försök att öva på den om och om igen. Nyckeln till bra kodning är övning. Lycka till och lycklig kodning!
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION