像 GMP 这样的任意精度库如何存储在内存中表示的超大 float ?
我可以想象,例如,如果您想计算 Pi 或欧拉常数,即 2,000,000 位数字,您将为小数点右侧的数字分配大量字节数组。每个字节将存储 2 个小数位值,数组将是数据结构的成员,其中包含用于存储该值的位数和字节数。
这是它的工作原理吗?
最佳答案
当前的计算机有 32 位或 64 位寄存器,因此对字节进行计算非常低效。此外,计算机以二进制方式工作,因此使用 2 的幂的基数更有效。他们会像 Mysticial 所说的那样使用基数 232 或 264。每个计算机字都会存储一个数字,并且它们会逐位工作。
在某些情况下,您不需要太多计算,但大多数情况下,您需要输入和输出十进制字符。这种情况下使用一个幂或 10 的基数效率更高。您可以在 32 位计算机中使用基数 109,在 64 位计算机中使用 1019,因为这是可以存储在 32 位或 64 位计算机中的 10 的最大幂值
关于c - 如何在内存中表示极大的 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23840565/