GMP 变量的位大小
如何知道 GMP 中声明的变量的大小?或者我们如何确定 GMP 中整数的大小?
mpz_random(temp,1);
在手册中,给出了该函数为“temp”分配 1limb(= 32bits for my comp)大小。 但它只有 9 位数字.. 所以我不认为32位大小的数字只能容纳9位数字..
所以请帮助我知道GMP中整数变量的大小..
谢谢adv..
How to know the size of a declared variable in GMP??or how can we decide the size of an integer in GMP?
mpz_random(temp,1);
in manual it is given that this function allocates 1limb(=32bits for my comp) size to the "temp"....
but it is having 9 digit number only..
SO i dont think that 32 bit size number holds only 9 digits number..
So please help me to know the size of integer variable in GMP ..
thanks in adv..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
mpz_sizeinbase(num, 2)
将为您提供“已使用”位的大小。mpz_sizeinbase(num, 2)
will give you the size in 'used' bits.32 位(4 字节)实际上只能用于存储 9 个十进制数字
,因此这里只有 9 个完整的十进制数字(第 10 个在 0 到 4 的区间内,因此它不完整)。
您可以通过对数重新计算:
让我们问谷歌
一切都是正确的。
32 bits (4 bytes) really can be used to store only 9 decimal digits
so only 9 full decimal digits here (the 10th is in interval from 0 up 4, so it is not full).
You can recompute this via logarithms:
let's ask google
Everything is correct.
您可以检查调试器中的肢体数量。 GMP 整数具有内部字段“_mp_size”,它是用于保存变量当前值的肢体计数(0 是一种特殊情况:用 _mp_size = 0 表示)。这是我在 Visual C++ 中运行的示例(请参阅我的文章 如何使用 MPIR 在 Windows 上安装和运行 GMP):
You can check the number of limbs in a debugger. A GMP integer has the internal field '_mp_size' which is the count of the limbs used to hold the current value of the variable (0 is a special case: it's represented with _mp_size = 0). Here's an example I ran in Visual C++ (see my article How to Install and Run GMP on Windows Using MPIR):