2

GMPで宣言された変数のサイズを知る方法??またはGMPで整数のサイズを決定するにはどうすればよいですか?

mpz_random(temp,1);

マニュアルでは、この関数は 1limb(=私のコンプでは 32 ビット) のサイズを "temp" に割り当てることが指定されています....しかし、それは 9 桁の数字しか持っていません..だから私は 32 ビットサイズの数字が 9 桁しか保持していないと思います番号..

GMPの整数変数のサイズを教えてください..

前もって感謝..

4

3 に答える 3

4

mpz_sizeinbase(num, 2) サイズは「使用済み」ビットで表示されます。

于 2012-02-15T15:06:08.993 に答える
3

32 ビット (4 バイト) を実際に使用して格納できるのは、10 進数の 9 桁のみです。

2^32 = 4 294 967 296

したがって、ここでは 9 桁の完全な 10 進数のみです (10 番目は 0 から 4 までの範囲にあるため、完全ではありません)。

対数を介してこれを再計算できます。

log_10(2^32)

グーグルに聞いてみましょう

log base 10(2^32) = 9.63295986

すべてが正しいです。

于 2010-03-22T01:25:02.390 に答える
1

デバッガーで手足の数を確認できます。GMP 整数には、変数の現在の値を保持するために使用される四肢の数である内部フィールド '_mp_size' があります (0 は特殊なケースです: _mp_size = 0 で表されます)。Visual C++ で実行した例を次に示します (私の記事How to Install and Run GMP on Windows Using MPIR を参照してください)。

mpz_set_ui(一時、1073741824); //2^30, (_mp_size = 1)
mpz_mul(温度、温度、温度); //2^60 (_mp_size = 2)
mpz_mul(温度、温度、温度); //2^120 (_mp_size = 4)
于 2010-03-22T14:03:37.953 に答える