如何知道 GMP 中声明变量的大小?或者我们如何确定 GMP 中整数的大小?
mpz_random(temp,1);
在手册中给出这个函数为“temp”分配1limb(= 32bits for my comp)大小....但它只有9位数字..所以我不认为32位大小的数字只包含9位数字数字..
所以请帮我知道 GMP 中整数变量的大小..
谢谢你的建议。。
如何知道 GMP 中声明变量的大小?或者我们如何确定 GMP 中整数的大小?
mpz_random(temp,1);
在手册中给出这个函数为“temp”分配1limb(= 32bits for my comp)大小....但它只有9位数字..所以我不认为32位大小的数字只包含9位数字数字..
所以请帮我知道 GMP 中整数变量的大小..
谢谢你的建议。。
mpz_sizeinbase(num, 2)
将为您提供“已使用”位的大小。
32 位(4 字节)真的只能存储 9 个十进制数字
2^32 = 4 294 967 296
所以这里只有 9 个完整的十进制数字(第 10 个是从 0 到 4 的间隔,所以它不完整)。
您可以通过对数重新计算:
log_10(2^32)
让我们问问谷歌
log base 10(2^32) = 9.63295986
一切都是正确的。
您可以在调试器中检查肢体的数量。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)