Java BigInteger

Java Biginteger



Java は、64 ビット数を超える非常に大きな数を管理するための特別な BigInteger クラスを提供します。このクラスが処理できる整数値のサイズは、JVM の割り当てられたメモリによって単純に制限されます。 Number.implements を継承する BigInteger クラスは、Comparable インターフェイスを実装します。これは、すべての Java プリミティブ整数演算子と java.lang.math モジュールのすべてのメソッドに相当します。 BigInteger クラスの不変性のため、BigInteger オブジェクトの格納された値は変更できません。

例 1:

次のプログラムは、Java で BigInteger を作成し、提供された BigInteger 値に算術演算を適用する方法を提供します。








プログラム内の Java math パッケージから BigInteger クラスをインポートしました。その後、javaクラス「BigIntegerExample」のmain()メソッドでBigIntegerオブジェクト「bigInt1」と「bigInt2」を宣言しました。次に、BigInteger クラス内の大きな数値で BigInteger オブジェクトを初期化しました。指定された長整数値に対して算術演算を実行するために、BigInteger クラスの別のオブジェクトを作成しました。オブジェクトは、BinInteger 値を乗算する「Multiplication」と、BigInteger 値を除算する「Division」として宣言されます。



次に、入力「bigInt2」を受け取るオブジェクト「multiply」に、BigInteger の Multiply() メソッドとともに「bigInt1」を割り当てました。また、「bigInt1」で除算されるパラメータ「bigInt2」を取り、実行後に結果を出力するdivision()メソッドを呼び出しました。



BigInteger 値に対する乗算と除算の結果は、次の出力イメージに示されています。これは、BigInteger が Java で構成され、さまざまな操作に使用される方法です。





例 2:

階乗計算は、非常に大きな入力を取得する整数の良い例です。 BigInteger を使用して、より大きな整数値の階乗を取得することもできます。




BigInteger クラスの「factorial」関数を作成しました。この関数では、int 型の「num」オブジェクトが引数として渡され、値「Num」の階乗が返されます。 「factorial」関数内で、BigInteger 値「2」が指定された BigInteger オブジェクト「max_fict」を宣言しました。その後、for ループをデプロイしました。これは、multiply() メソッドが呼び出されると、「max_fict」値を反復して 4、5、および n 番目の値まで乗算します。 Multiply() 自体は別の「valueOf」メソッドと呼ばれ、for ループのオブジェクト「i」が提供されます。 return ステートメントは、より大きな階乗を提供します。次に、プログラムの main() メソッドを確立しました。オブジェクト「Num」を値で初期化し、factorial() メソッドから「Num」の階乗を出力しました。

数値「40」の階乗値は、次のように BigInteger 値を提供します。

例 3:

BigInteger クラスの bitCount() 関数は、ビットをカウントします。 bitCount() メソッドは、この BigInteger の 2 つの補数の形式であり、符号ビットとは異なるビット数を提供します。このメソッドは、BigInteger の値が正の場合に設定されたビットを返します。一方、BigInteger に負の値を指定した場合、このメソッドはリセットされたビット数を返します。


型クラス「BigInteger」の 2 つの変数「b1」と「b2」を宣言しました。また、さらに 2 つの変数「integer1」と「integer2」、int プリミティブ型を定義しました。宣言に続いて、「b1」を正の BigInteger 値で初期化し、「b2」を負の BigInteger 値で初期化しました。次に、「integer1」と「integer2」を bitCount() メソッドで BigInteger 変数「b1」と「b2」に割り当てました。カウントされたビットは、指定された BigInteger 値の bitCount() メソッドから取得されます。

正の BigInteger は「2」ビットを提供し、BigInteger の負の値は「1」ビット値を出力します。

例 4:

BigInteger 内の大規模数値データの絶対値は、BigInteger クラスの abs() メソッドを使用して求めることができます。 abs() メソッドは BigInteger の絶対値を返します。


「big1」、「big2」、「big3」、「big4」の 4 つの変数を宣言した BigInteger クラスがあります。変数「big1」と「big2」は、それぞれ正と負の値で指定されます。その後、変数「big3」と「big4」に「big1」と「big2」を指定して abs() メソッドを呼び出しました。 abs() メソッドは入力値を取りませんが、変数「big1」と「big2」で呼び出されることに注意してください。 abs() メソッドはこれらの BigInteger 変数の絶対値を取得し、結果はコンパイル時に出力されます。

abs() メソッドは常に正の絶対値を返すため、正の 432 値と負の 432 値の絶対値は同じです。

例 5:

BigInteger 値の比較は、BigInteger の compareTo() メソッドを使用して実行できます。 BigInteger は、compareTo() メソッド内のパラメーターとして入力される BigInteger と比較されます。 compareTo() メソッドの戻り値は、BigInteger 値に基づいています。 BigInteger 値の比較が等しい場合、ゼロが返されます。それ以外の場合、BigInteger 値が引数として渡された BigInteger 値より大きいか小さいことを条件に、「1」と「-1」が返されます。


クラス「BigInteger」のオブジェクト「MyBigInt1」および「MyBigtInt2」宣言があります。これらのオブジェクトは、同じ BigInteger 値で指定されます。その後、compareTo() メソッドで「MyBigInt1」オブジェクトを呼び出し、「MyBigInt2」オブジェクトを引数として渡して「MyBigInt2」オブジェクトと比較する「comparevalue」オブジェクトを作成しました。次に、compareTo() メソッドの結果が値「0」に等しいかどうかをチェックした if-else ステートメントがあります。

両方の BigInteger オブジェクトの値が同じであるため、次の図に示すように、compareTo() の結果はゼロを返します。

例 6:

BigInteger の flipBit(index) メソッドを使用して、BigInteger 内の特定のビット位置で反転することもできます。このメソッドは (bigInt ^ (1<


「B_val1」と「B_val2」という 2 つの BigInteger 変数を定義しました。変数「B_val1」は、値が指定されている BigInteger クラスで初期化されます。次に、flipBit() メソッドを使用して変数「B_val2」を設定しました。ここでは、変数「B_value」に対してインデックス値「2」で FlipBit 操作が実行されます。

BigInteger 値「9」のインデックス位置はインデックス「2」で反転され、出力に値「13」が出力されます。

結論

BigInteger クラスは非常に使いやすく、膨大なメソッド ライブラリがあるため、競技プログラミングで頻繁に使用されます。 BigInteger は、現在アクセス可能なすべてのプリミティブ データ型の容量を超える非常に長い数値の計算に使用されます。モジュラー算術演算のさまざまなメソッドを提供します。最初に BigInteger を作成し、次にそのメソッドのいくつかについて説明しました。