CodeGym /Blog Java /rawak /Kelas Java BigInteger
John Squirrels
Tahap
San Francisco

Kelas Java BigInteger

Diterbitkan dalam kumpulan

Apakah Kelas BigInteger?

Terdapat beberapa jenis data primitif dalam Java yang digunakan, seperti int atau long, untuk melaksanakan operasi integer. Walau bagaimanapun, kadangkala kita perlu menyimpan nombor yang besar di luar skop jenis data primitif tersebut. Kelas BigInteger digunakan untuk pengiraan matematik untuk nombor yang sangat besar. Ia menyediakan semua kaedah daripada pakej java.lang.Math dan analog kepada semua pengendali integer primitif Java. Integer BesarKelas meliputi operasi untuk aritmetik modular, manipulasi bit, pengiraan GCD dan beberapa operasi lain. Integer Besar diwakili dalam tatatanda pelengkap dua. Tiada had teori tentang berapa besar nombor boleh disimpan kerana memori diperuntukkan secara dinamik. Walau bagaimanapun, secara praktikalnya memori adalah terhad dan kita boleh menyimpan integer yang mempunyai bilangan bit kurang daripada atau sama dengan Integer.MAX_VALUE . Ini menyediakan sempadan atas yang cukup besar untuk menyimpan hampir semua nombor besar.

Bagaimanakah Kelas BigInteger Dilaksanakan?


import java.math.BigInteger;
Untuk melaksanakan kelas BigInteger dalam kod anda, anda perlu mengimport pakej java.math.BigInteger .

Pengisytiharan Kelas BigInteger

Kelas BigInteger di Java diisytiharkan dengan cara berikut dalam pakej java.math :

public class BigInteger
   extends Number
      implements Comparable<BigInteger>
Kelas BigInteger memanjangkan kelas Nombor dan melaksanakan antara muka Setanding . Ia diisytiharkan dan ditakrifkan dalam pakej java.math .

Pembina Kelas

Kelas BigInteger Java mempunyai banyak pembina yang terlebih beban. Anda boleh mencuba dan menjalankan setiap dalam editor untuk melihat cara ia berfungsi.
Sr# Pembina Penerangan
1 BigInteger(bait[] val) Menterjemah tatasusunan bait ke dalam BigInteger .
2 BigInteger(int signum, byte[] magnitud) Menterjemah perwakilan magnitud tanda kepada BigInteger .
3 BigInteger(int bitLength, int certainty, Random rnd) Membina BigInteger positif yang dijana secara rawak daripada panjang yang ditentukan.
4 BigInteger(String val) Menterjemah perwakilan rentetan perpuluhan ke dalam BigInteger .
5 BigInteger(String val, int radix) Menukar perwakilan String dalam radix yang ditentukan kepada BigInteger .

Kaedah Kelas

Kelas BigInteger Java mempunyai banyak kaedah, beberapa daripadanya diterangkan di bawah. Dalam jadual, 'ini' mewakili BigInteger yang memanggil kaedah dan ' val ' ialah hujah yang dihantar kepada kaedah.
abs() Ia mengembalikan nilai mutlak ' this ' BigInteger .
Tambah() Ia mengembalikan Biginteger dengan mengira ' this + val '.
tolak() Ia mengembalikan Biginteger dengan mengira ' this - val '.
bahagikan() Ia mengembalikan Biginteger dengan mengira ' this / val '.
darab() Ia mengembalikan Biginteger dengan mengira ' this * val '.
nilai() Ia mengembalikan nilai BigInteger bagi long .
sama dengan() Ia membandingkan kesamaan antara ' this ' BigInteger dan objek tertentu.
pow() Ia mengembalikan Biginteger dengan mengira ' exponent ini '.
min() Ia mengembalikan minimum antara ' this ' BigInteger dan nilai yang diberikan.
maks() Ia mengembalikan maksimum antara ' this ' BigInteger dan nilai yang diberikan.
mod() Ia mengembalikan nilai untuk ' mod ini m '.
gcd() Ia mengembalikan BigInteger yang merupakan pembahagi sepunya terbesar antara nilai mutlak ' ini ' dan ' nilai lulus '.
bitCount() Ia mengembalikan bilangan bit dalam perwakilan pelengkap dua bagi ' this ' BigInteger .
bitLength() Ia mengembalikan bilangan bit, tidak termasuk bit tanda, dalam perwakilan pelengkap dua minimum ' ini ' BigInteger .
dan() Ia mengembalikan Biginteger dengan mengira ' this & val '.
atau() Ia mengembalikan Bigintger dengan mengira ' ini | val '.
bukan() Ia mengembalikan Biginteger dengan mengira ' ~this'.
dan tidak() Ia mengembalikan Biginteger dengan mengira ' ini & ~val '.
intValue() Ia menukar BigInteger kepada int .
floatValue() Ia menukar BigInteger kepada terapung .
longValue() Ia menukar BigInteger kepada long .
doubleValue() Ia menukar BigInteger kepada dua kali ganda .
menjalin() Ia mengembalikan perwakilan rentetan perpuluhan BigInteger .

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

Pengeluaran

15511210043330985984000000

Penjelasan

Dalam coretan di atas, faktor nombor yang besar dikira menggunakan Kelas BigInteger dengan mengimport pakej java.math.BigInteger . Kami telah mencipta kaedah hitungFactorial . Kaedah ini mencipta BigInteger dan kemudian mengira faktorial dengan menggunakan kaedah darab f.multiply(BigInteger.valueOf(i)) .

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

Pengeluaran

60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 nilai min: 20 nilai maksimum: 60

Penjelasan

Dalam coretan di atas, kami telah membuat dua BigInteger menggunakan pembina BigInteger(String val) . Kami menggunakan kaedah yang berbeza pada big1 dan big2 BigInteger dengan nilai 20 dan 60 masing-masing. Kami menggunakan kaedah berikut:
  1. besar2.tolak(besar1) untuk menolak 20 daripada 60.
  2. big1.add(big2) untuk menambah 20 dan 60.
  3. besar1.darab(besar2) untuk mendarab 20 dan 60.
  4. besar2.bahagi(besar1) untuk membahagi 60 dengan 20.
  5. big1.min(big2) untuk mendapatkan nilai yang lebih kecil daripada dua nilai.
  6. big1.max(big2) untuk mendapatkan yang lebih besar daripada dua nilai.
Adalah penting untuk ambil perhatian bahawa java.math.BigInteger diimport di bahagian atas kod.

Kesimpulan

Sekarang anda sepatutnya sudah biasa dengan Kelas BigInteger di Java. Anda sepatutnya boleh menggunakan BigInteger s dalam kod anda menggunakan pelbagai jenis pembina. Anda juga seharusnya dapat melakukan operasi aritmetik dan logik yang berbeza pada mereka dengan menggunakan kaedah Kelas BigInteger . Sebagai cabaran, anda boleh cuba memanggil kaedah berbeza dengan nilai BigInteger s yang berbeza. Ia akan mengukuhkan lagi pemahaman anda tentang BigInteger di Jawa. Untuk lebih yakin dalam pembelajaran anda cuba praktikkannya berulang kali. Kunci kepada pengekodan yang baik adalah amalan. Semoga berjaya dan selamat mengekod!
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION