GMP 变量的位大小

发布于 2024-08-26 05:15:09 字数 236 浏览 7 评论 0原文

如何知道 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

绾颜 2024-09-02 05:15:09

mpz_sizeinbase(num, 2) 将为您提供“已使用”位的大小。

mpz_sizeinbase(num, 2) will give you the size in 'used' bits.

战皆罪 2024-09-02 05:15:09

32 位(4 字节)实际上只能用于存储 9 个十进制数字

2^32 = 4 294 967 296

,因此这里只有 9 个完整的十进制数字(第 10 个在 0 到 4 的区间内,因此它不完整)。

您可以通过对数重新计算:

log_10(2^32)

让我们问谷歌

log base 10(2^32) = 9.63295986

一切都是正确的。

32 bits (4 bytes) really can be used to store only 9 decimal digits

2^32 = 4 294 967 296

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:

log_10(2^32)

let's ask google

log base 10(2^32) = 9.63295986

Everything is correct.

小嗷兮 2024-09-02 05:15:09

您可以检查调试器中的肢体数量。 GMP 整数具有内部字段“_mp_size”,它是用于保存变量当前值的肢体计数(0 是一种特殊情况:用 _mp_size = 0 表示)。这是我在 Visual C++ 中运行的示例(请参阅我的文章 如何使用 MPIR 在 Windows 上安装和运行 GMP):

mpz_set_ui(temp, 1073741824); //2^30, (_mp_size = 1)
mpz_mul(temp,temp,temp); //2^60 (_mp_size = 2)
mpz_mul(temp,temp,temp); //2^120 (_mp_size = 4)

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):

mpz_set_ui(temp, 1073741824); //2^30, (_mp_size = 1)
mpz_mul(temp,temp,temp); //2^60 (_mp_size = 2)
mpz_mul(temp,temp,temp); //2^120 (_mp_size = 4)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文