Apa itu Kelas BigInteger?
Ada beberapa tipe data primitif di Java yang digunakan, seperti int atau long, untuk melakukan operasi integer. Namun, terkadang kita perlu menyimpan sejumlah besar di luar cakupan tipe data primitif tersebut. Kelas BigInteger digunakan untuk perhitungan matematis untuk bilangan yang sangat besar. Ia menyediakan semua metode dari paket java.lang.Math dan analog ke semua operator integer primitif Java. Bilangan Bulat BesarKelas mencakup operasi untuk aritmatika modular, manipulasi bit, perhitungan GCD, dan beberapa operasi lainnya. BigIntegers direpresentasikan dalam notasi pelengkap dua. Tidak ada batasan teoretis tentang seberapa besar angka yang dapat disimpan karena memori dialokasikan secara dinamis. Namun, secara praktis memori terbatas dan kita dapat menyimpan bilangan bulat yang memiliki jumlah bit kurang dari atau sama dengan Integer.MAX_VALUE . Ini memberikan batas atas yang cukup besar untuk menyimpan hampir semua bilangan besar.Bagaimana Kelas BigInteger Diimplementasikan?
import java.math.BigInteger;
Untuk mengimplementasikan kelas BigInteger dalam kode Anda, Anda perlu mengimpor paket java.math.BigInteger .
Deklarasi Kelas BigInteger
Kelas BigInteger di Java dideklarasikan dengan cara berikut dalam paket java.math :public class BigInteger
extends Number
implements Comparable<BigInteger>
Kelas BigInteger memperluas kelas Number dan mengimplementasikan antarmuka Sebanding . Itu dideklarasikan dan didefinisikan dalam paket java.math .
Pembangun Kelas
Kelas BigInteger Java memiliki banyak konstruktor yang kelebihan beban. Anda dapat mencoba dan menjalankan masing-masing di editor untuk melihat cara kerjanya.Sr# | Konstruktor | Keterangan |
---|---|---|
1 | BigInteger(byte[] val) | Menerjemahkan larik byte menjadi BigInteger . |
2 | BigInteger(int signum, byte[] magnitudo) | Menerjemahkan representasi besaran tanda ke dalam BigInteger . |
3 | BigInteger(int bitLength, int kepastian, Random rnd) | Membuat BigInteger positif yang dihasilkan secara acak dengan panjang yang ditentukan. |
4 | BigInteger(Nilai string) | Menerjemahkan representasi string desimal menjadi BigInteger . |
5 | BigInteger(String val, int radix) | Mengonversi representasi String dalam radix yang ditentukan menjadi BigInteger . |
Metode Kelas
Kelas BigInteger Java memiliki banyak metode, beberapa di antaranya dijelaskan di bawah ini. Dalam tabel, 'ini' mewakili BigInteger yang memanggil metode dan ' val ' adalah argumen yang diteruskan ke metode.abs() | Ini mengembalikan nilai absolut dari ' ini ' BigInteger . |
menambahkan() | Ia mengembalikan Biginteger dengan menghitung ' this + val '. |
mengurangi() | Ini mengembalikan Biginteger dengan menghitung ' this - val '. |
membagi() | Ini mengembalikan Biginteger dengan menghitung ' this / val '. |
berkembang biak() | Ini mengembalikan Biginteger dengan menghitung ' this * val '. |
Nilai dari() | Ia mengembalikan nilai BigInteger dari long yang diberikan . |
sama dengan() | Itu membandingkan kesetaraan antara ' ini ' BigInteger dan objek yang diberikan. |
pow() | Ini mengembalikan Biginteger dengan menghitung ' thisexponent '. |
menit() | Ini mengembalikan minimum antara ' ini ' BigInteger dan nilai yang diberikan. |
maks() | Ini mengembalikan maksimum antara ' ini ' BigInteger dan nilai yang diberikan. |
mod() | Ini mengembalikan nilai untuk ' mod ini m '. |
gcd() | Ini mengembalikan BigInteger yang merupakan pembagi umum terbesar antara nilai absolut ' this ' dan ' nilai yang diteruskan '. |
bitCount() | Ia mengembalikan jumlah bit dalam representasi two's-complement dari ' this ' BigInteger . |
bitPanjang() | Ia mengembalikan jumlah bit, tidak termasuk bit tanda, dalam representasi pelengkap dua-minimal dari ' this ' BigInteger . |
Dan() | Ini mengembalikan Biginteger dengan menghitung ' this & val '. |
atau() | Ini mengembalikan Biginteger dengan menghitung ' ini | val '. |
bukan() | Ia mengembalikan Biginteger dengan menghitung ' ~this'. |
dan tidak() | Ini mengembalikan Biginteger dengan menghitung ' this & ~val '. |
intValue() | Itu mengubah BigInteger menjadi int . |
floatValue() | Itu mengubah BigInteger menjadi float . |
nilaipanjang() | Ini mengonversi BigInteger menjadi long . |
nilaiganda() | Ini mengubah BigInteger menjadi double . |
keString() | Ia mengembalikan representasi string desimal dari 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));
}
}
Keluaran
15511210043330985984000000
Penjelasan
Pada cuplikan di atas, faktor bilangan besar dihitung menggunakan Kelas BigInteger dengan mengimpor paket java.math.BigInteger . Kami telah membuat metode countFactorial . Metode ini membuat BigInteger dan kemudian menghitung faktorial dengan menggunakan metode perkalian 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);
}
}
Keluaran
60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 nilai min: 20 nilai maks: 60
Penjelasan
Dalam cuplikan di atas, kita telah membuat dua BigInteger menggunakan konstruktor BigInteger(String val) . Kami menerapkan metode yang berbeda pada BigInteger s big1 dan big2 dengan nilai masing-masing 20 dan 60. Kami menerapkan metode berikut:- big2.subtract(big1) untuk mengurangi 20 dari 60.
- big1.add(big2) untuk menambahkan 20 dan 60.
- big1.multiply(big2) untuk mengalikan 20 dan 60.
- big2.divide(big1) untuk membagi 60 dengan 20.
- big1.min(big2) untuk mendapatkan yang lebih kecil dari dua nilai.
- big1.max(big2) untuk mendapatkan yang lebih besar dari dua nilai.