BigInteger クラスとは何ですか?
Java には、整数演算を実行するために使用される int や long などのプリミティブ データ型がいくつかあります。ただし、場合によっては、このようなプリミティブ データ型の範囲外に大きな数値を格納する必要があることがあります。BigIntegerクラスは、非常に大きな数値の数学的計算に使用されます。これは、 java.lang.Mathパッケージのすべてのメソッドと、Java のすべての基本整数演算子の類似物を提供します。 ビッグ整数このクラスは、モジュラー算術演算、ビット操作、GCD 計算、およびその他のいくつかの演算をカバーします。BigInteger は 2 の補数表記で表されます。メモリは動的に割り当てられるため、格納できる数値に理論上の制限はありません。ただし、実際にはメモリは限られているため、 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(バイト[] val) | バイト配列を BigInteger に変換します。 |
2 | BigInteger(int 符号、byte[] 大きさ) | 符号絶対値表現をBigIntegerに変換します。 |
3 | BigInteger(int bitLength、int 確実性、ランダム rnd) | ランダムに生成された、指定された長さの正のBigIntegerを構築します。 |
4 | BigInteger(文字列値) | 10 進数の文字列表現をBigIntegerに変換します。 |
5 | BigInteger(文字列 val, int 基数) | 指定された基数のString表現をBigIntegerに変換します。 |
クラスメソッド
Java のBigIntegerクラスには多くのメソッドがあり、その一部を以下に説明します。表では、「this」はメソッドを呼び出すBigIntegerを表し、「 val」はメソッドに渡される引数です。腹筋() | 「この」BigIntegerの絶対値を返します。 |
追加() | 「this + val 」を計算してBigintegerを返します。 |
減算() | 「this - val 」を計算してBigintegerを返します。 |
分ける() | 「 this / val 」を計算してBigintegerを返します。 |
かける() | 「this * val 」を計算してBigintegerを返します。 |
値の() | 指定されたlongのBigInteger値を返します。 |
等しい() | これは、「this」BigIntegerと指定されたオブジェクトの間の等価性を比較します。 |
捕虜() | 「 thisexponent 」を計算してBigintegerを返します。 |
分() | 「この」BigIntegerと指定された値の間の最小値を返します。 |
最大() | 「この」BigIntegerと指定された値の間の最大値を返します。 |
モッド() | 「 this mod m 」の値を返します。 |
gcd() | これは、 「 this」の絶対値と「渡された値」の間の最大公約数であるBigIntegerを返します。 |
ビットカウント() | ' this ' BigIntegerの 2 の補数表現のビット数を返します。 |
ビット長() | これは、 ' this ' BigIntegerの最小の 2 の補数表現の、符号ビットを除いたビット数を返します。 |
と() | 「this & val 」を計算してBigintegerを返します。 |
または() | ' this | 'を計算してBigintegerを返します。val '。 |
いいえ() | 「 ~this」を計算して Bigintegerを返します。 |
andNot() | 「 this & ~val 」を計算してBigintegerを返します。 |
intValue() | BigIntegerをintに変換します。 |
floatValue() | BigIntegerをfloatに変換します。 |
longValue() | BigIntegerをlongに変換します。 |
doubleValue() | BigIntegerをdoubleに変換します。 |
toString() | BigIntegerの 10 進文字列表現を返します。 |
例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)コンストラクターを使用して2 つの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) を使用して、 2 つの値のうち小さい方を取得します。
- big1.max(big2) 2 つの値のうち大きい方を取得します。
GO TO FULL VERSION