2

重複の可能性:
C++でbigintを実装する方法

たとえば、「long」型の変数があるとします。longは、-⁠9,223,372,036,854,775,808から9,223,372,036,854,775,807までの値を格納できます。無制限のサイズの整数を作成できる独自のC++データ型を作成することは可能ですか?記憶の観点からは無謀なことは知っていますが、興味があります。

4

3 に答える 3

2

ハ!ここに無謀な答えがあります!

ビットセットを動的に作成および追加するクラスを作成するだけです。クラスを実装するには、unsigned longを格納するベクトル(または必要な適切なコンテナー)を作成する必要があります(各unsigned longは、その前のビットセットよりも高い次元のビットセットを表します。任意のPODタイプを使用することもできます。欲しいです)。

クラスが事実上無制限の可能な値を持つようにするには、値のオーバーフローとアンダーフローの自動検出(できれば演算子)を実装する必要があります。オーバーフローの場合は、最後のビットセットの後に高次元のビットセットを追加する必要があります。アンダーフローは、値ゼロを含む参照ビットセットを設定することによって処理する必要があります。値がゼロ(または最小値)より低くなった場合は、参照(または最小値を含む)ビットセットの前にビットセットを追加する必要があります。

2進演算と基数についてお読みください。彼らはあなたにアイデアを与えるはずです(そして確かに非常に便利です!)。

于 2012-08-24T05:54:53.910 に答える
0

確かに、たとえばGNU Multiple PrecisionArithmeticLibraryを見てください。

于 2012-08-24T02:59:57.667 に答える
0

はい、それ(またはグーグル)を実装するだけです。一例はhttp://sourceforge.net/projects/cpp-bigint/です。

于 2012-08-24T03:00:03.083 に答える