什麼是 BigInteger 類?
Java 中有一些原始數據類型用於執行整數運算,例如 int 或 long。然而,有時我們需要在這種原始數據類型的範圍之外存儲大量數字。BigInteger類用於非常大的數字的數學計算。它提供了java.lang.Math包中的所有方法和所有 Java 原始整數運算符的類似物。 大整數課程涵蓋模運算、位操作、GCD 計算和一些其他操作。BigIntegers 以補碼表示法表示。由於內存是動態分配的,因此理論上可以存儲多大的數字沒有限制。然而,實際上內存是有限的,我們可以存儲一個位數小於或等於 Integer.MAX_VALUE 的整數。這提供了一個足夠大的上限來存儲幾乎所有的大數。BigInteger 類是如何實現的?
import java.math.BigInteger;
要在您的代碼中實現BigInteger類,您需要導入java.math.BigInteger包。
BigInteger 類聲明
Java中的BigInteger類在java.math包中的聲明方式如下:
public class BigInteger
extends Number
implements Comparable<BigInteger>
BigInteger類擴展了Number類並實現了Comparable接口。它在java.math包中聲明和定義。
類構造函數
Java 的BigInteger類有許多重載的構造函數。您可以嘗試在編輯器中運行每一個,看看它們是如何工作的。高級# | 構造函數 | 描述 |
---|---|---|
1個 | BigInteger(byte[] 值) | 將字節數組轉換為BigInteger。 |
2個 | BigInteger(int signum, byte[] magnitude) | 將符號幅度表示轉換為BigInteger。 |
3個 | BigInteger(int bitLength, int certainty, Random rnd) | 構造一個隨機生成的指定長度的正BigInteger 。 |
4個 | 大整數(字符串值) | 將十進製字符串表示形式轉換為BigInteger。 |
5個 | BigInteger(String val, int radix) | 將指定基數中的String表示形式轉換為BigInteger。 |
類方法
Java 的BigInteger類有很多方法,下面介紹其中的一些方法。在表中,“this”代表調用該方法的BigInteger ,“ val ”是傳遞給該方法的參數。絕對() | 它返回“ this ” BigInteger的絕對值。 |
添加() | 它通過計算“ this + val ”返回一個Biginteger。 |
減去() | 它通過計算“ this-val ”返回一個Biginteger。 |
劃分() | 它通過計算“ this / val ”返回一個Biginteger。 |
乘() | 它通過計算“ this * val ”返回一個Biginteger。 |
的價值() | 它返回給定long的BigInteger值。 |
等於() | 它比較“ this ” BigInteger和給定對象之間的相等性。 |
戰俘() | 它通過計算“ thisexponent ”返回一個Biginteger。 |
分鐘() | 它返回“ this ” BigInteger和給定值之間的最小值。 |
最大限度() | 它返回“ this ” BigInteger和給定值之間的最大值。 |
模型() | 它返回“ this mod m ”的值。 |
gcd() | 它返回一個BigInteger ,它是“ this ”的絕對值與“ passed value ”之間的最大公約數。 |
位計數() | 它返回“ this ” BigInteger的二進制補碼表示中的位數。 |
位長() | 它返回“ this ” BigInteger的最小二進制補碼表示中的位數,不包括符號位。 |
和() | 它通過計算“ this & val ”返回一個Biginteger。 |
或者() | 它通過計算 ' this |返回一個Biginteger 瓦爾'。 |
不是() | 它通過計算“ ~this”返回一個 Biginteger。 |
並不是() | 它通過計算“ this & ~val ”返回一個Biginteger。 |
整數值() | 它將BigInteger轉換為int。 |
浮動值() | 它將BigInteger轉換為float。 |
長值() | 它將BigInteger轉換為long。 |
雙值() | 它將BigInteger轉換為double。 |
toString() | 它返回BigInteger的十進製字符串表示形式。 |
示例 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));
}
}
輸出
15511210043330985984000000
解釋
在上面的代碼片段中,通過導入java.math.BigInteger包,使用BigInteger類計算大數的因子。我們創建了一個calculateFactorial方法。此方法創建一個BigInteger,然後使用乘法f.multiply(BigInteger.valueOf(i))計算階乘。示例 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);
}
}
輸出
60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 最小值:20 最大值:60
解釋
在上面的代碼片段中,我們使用BigInteger(String val)構造函數創建了兩個BigInteger。我們對BigInteger的big1和big2分別應用了不同的方法,其值為 20 和 60。我們應用了以下方法:- big2.subtract(big1)從 60 中減去 20。
- big1.add(big2)添加 20 和 60。
- big1.multiply(big2)乘以 20 和 60。
- big2.divide(big1)將 60 除以 20。
- big1.min(big2)獲取兩個值中較小的一個。
- big1.max(big2)獲取兩個值中較大的一個。
GO TO FULL VERSION