CodeGym /Blog Java /Aleatoriu /Clasa Java BigInteger
John Squirrels
Nivel
San Francisco

Clasa Java BigInteger

Publicat în grup

Ce este o clasă BigInteger?

Există unele tipuri de date primitive în Java care sunt folosite, cum ar fi int sau long, pentru a efectua operații cu numere întregi. Cu toate acestea, uneori trebuie să stocăm numere mari în afara domeniului de aplicare a unor astfel de tipuri de date primitive. BigInteger Class este folosită pentru calcule matematice pentru numere foarte mari. Oferă toate metodele din pachetul java.lang.Math și analogi la toți operatorii întregi primitivi ai Java. BigIntegerClasa acoperă operațiuni pentru aritmetică modulară, manipulare de biți, calcul GCD și alte câteva operații. BigIntegers sunt reprezentați în notație cu complement a doi. Nu există o limită teoretică a cât de mare poate fi stocat un număr, deoarece memoria este alocată dinamic. Cu toate acestea, practic memoria este limitată și putem stoca un număr întreg care are numărul de biți mai mic sau egal cu Integer.MAX_VALUE . Aceasta oferă o limită superioară suficient de mare pentru a stoca aproape toate numerele mari.

Cum este implementată clasa BigInteger?


import java.math.BigInteger;
Pentru a implementa clasa BigInteger în codul dvs., trebuie să importați pachetul java.math.BigInteger .

Declarație de clasă BigInteger

Clasa BigInteger în Java este declarată în felul următor în pachetul java.math :

public class BigInteger
   extends Number
      implements Comparable<BigInteger>
Clasa BigInteger extinde clasa Number și implementează o interfață Comparable . Este declarat și definit în pachetul java.math .

Constructori de clasă

Clasa BigInteger din Java are mulți constructori supraîncărcați. Puteți încerca să rulați fiecare în editor pentru a vedea cum funcționează.
Sr# Constructor Descriere
1 BigInteger(byte[] val) Traduce o matrice de octeți într-un BigInteger .
2 BigInteger(int signum, byte[] magnitudine) Traduce reprezentarea semnului-magnitudine într-un BigInteger .
3 BigInteger(int bitLength, int certitudine, Random rnd) Construiește un BigInteger pozitiv generat aleatoriu de lungimea specificată.
4 BigInteger(Val șir) Traduce reprezentarea șirului zecimal într-un BigInteger .
5 BigInteger(Val șir, radix int) Convertește reprezentarea String din radixul specificat într-un BigInteger .

Metode de clasă

Clasa BigInteger din Java are multe metode, dintre care unele sunt descrise mai jos. În tabel, „this” reprezintă BigInteger care apelează metoda și „ val ” este argumentul transmis metodei.
abs() Returnează valoarea absolută a lui „ acestBigInteger .
adăuga() Returnează un Biginteger calculând „ acest + val ”.
scădea() Returnează un Biginteger calculând „ acest - val ”.
divide() Returnează un Biginteger calculând „ this/val ”.
multiplica() Returnează un Biginteger calculând „ acest *val ”.
valoarea() Returnează o valoare BigInteger de lungă dată .
este egal() Compară egalitatea dintre „ acestBigInteger și un obiect dat.
pow() Returnează un Biginteger calculând „ acest exponent ”.
min() Returnează minimul dintre „ acestBigInteger și valoarea dată.
max() Returnează maximul dintre „ acestBigInteger și valoarea dată.
mod() Returnează o valoare pentru „ acest mod m ”.
gcd() Returnează un BigInteger care este cel mai mare divizor comun dintre valoarea absolută a lui „ this ” și „ valoarea transmisă ”.
bitCount() Returnează numărul de biți din reprezentarea în complement a doi a lui „ acestBigInteger .
bitLength() Returnează numărul de biți, excluzând bitul de semn, în reprezentarea minimă a complementului în doi a „ acestBigInteger .
și() Returnează un Biginteger calculând „ this & val ”.
sau() Returnează un Biginteger calculând „ acest | val '.
nu() Returnează un Biginteger calculând „ ~this”.
si nu() Returnează un Biginteger calculând „ this & ~val ”.
intValue() Convertește BigInteger într-un int .
floatValue() Convertește BigInteger în float .
longValue() Acesta convertește BigInteger în long .
doubleValue() Acesta convertește BigInteger în double .
toString() Returnează reprezentarea șirului zecimal al BigInteger .

Exemplul 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));
    }
}

Ieșire

15511210043330985984000000

Explicaţie

În fragmentul de mai sus, factorul unui număr mare este calculat folosind BigInteger Class prin importul pachetului java.math.BigInteger . Am creat o metodă calculateFactorial . Această metodă creează un BigInteger și apoi calculează factorialul folosind metoda de multiplicare f.multiply(BigInteger.valueOf(i)) .

Exemplul 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);
    }
}

Ieșire

60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 min valoare: 20 max valoare: 60

Explicaţie

În fragmentul de mai sus, am creat două BigInteger folosind constructorul BigInteger(String val) . Am aplicat diferite metode pe BigInteger s big1 și big2 cu valorile 20 și respectiv 60. Am aplicat următoarele metode:
  1. big2.subtract(big1) pentru a scădea 20 din 60.
  2. big1.add(big2) pentru a adăuga 20 și 60.
  3. big1.multiply(big2) pentru a înmulți 20 și 60.
  4. big2.divide(big1) pentru a împărți 60 la 20.
  5. big1.min(big2) pentru a obține cea mai mică dintre cele două valori.
  6. big1.max(big2) pentru a obține cea mai mare dintre cele două valori.
Este important de reținut că java.math.BigInteger este importat în partea de sus a codului.

Concluzie

Până acum ar trebui să fii familiarizat cu clasa BigInteger din Java. Ar trebui să puteți utiliza BigInteger în codul dvs. folosind diferite tipuri de constructori. De asemenea, ar trebui să puteți efectua diferite operații aritmetice și logice pe ele folosind metodele BigInteger Class. Ca o provocare, puteți încerca să apelați diferite metode cu valori diferite ale BigInteger s. Vă va consolida și mai mult înțelegerea BigInteger -urilor în Java. Pentru a fi mai încrezător în învățarea ta, încearcă să o exersezi din nou și din nou. Cheia unei bune codări este practica. Mult succes și codare fericită!
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION