74

大きな整数の計算を行う必要があります。128 ビット整数を表し、通常の演算子をすべて実装するクラスまたは構造体はありますか?

ところで、10 進数を使用して 96 ビットの int を表すことができることに気付きました。

4

8 に答える 8

53

ここSystem.Numericsにあります。「BigInteger 型は、理論的には値に上限または下限がない、任意に大きな整数を表す不変の型です。」

var i = System.Numerics.BigInteger.Parse("10000000000000000000000000000000");
于 2008-10-22T22:39:13.210 に答える
14

いいえ、.NET <= 3.5 には何もありません。BigIntegerが .NET 4.0 で復活することを期待しています。( .NET 3.5 から削除されました。)

于 2008-10-22T22:26:42.173 に答える
4

BigInteger は現在、.NET 4.0 の C# およびその仲間の標準部分です。参照: Gunnar Peipman の ASP.NET ブログ。特に通常の数学演算子 (+、-、​​/、...) を使用する場合、これらの演算子は通常、単一の CPU 命令に直接マップされるため、CPU は通常、通常の整数をはるかに高速かつ一定の時間で処理できることに注意してください。

BigInteger を使用すると、最も基本的な数学演算でさえ、実行時間が数値のサイズによって異なるメソッドへの関数呼び出しがはるかに遅くなります。これは、BigInteger が任意精度の算術演算を実装しているためです。これにより、かなりの、しかし必要なオーバーヘッドが追加されます。利点は、BigInteger が 64 ビットや 128 ビットに制限されるのではなく、使用可能なシステム メモリ (または約 2^64 ビットの精度のいずれか早い方) によって制限されることです。ここを読んでください。

于 2011-03-21T22:02:56.913 に答える
3

J# ライブラリ (デフォルトで VS に含まれる vjslib.dll) を参照してもかまわない場合は、.NET に BigInteger が既に実装されています。

using java.math;

public static void Main(){
    BigInteger biggy = new BigInteger(....)

}
于 2008-10-23T07:41:33.630 に答える
-3

Mono には、ソースを追跡できる BigInteger 実装があると思います。

于 2008-10-22T22:28:16.523 に答える