Ruby如何存储大量数据?

时间:2014-11-17 16:20:45

标签: ruby binary integer 64-bit largenumber

Ruby可以存储非常大的数字。现在我想起来了,我甚至都不知道那是怎么回事。

计算机以两位数字(0和1)的形式存储数据。这被称为二进制表示法。但是,他们可以存储的数字大小有限制。

目前大多数操作系统都以64位运行。这意味着变量的最高可分配地址空间是64位。

整数存储在base 2系统中,这意味着计算机应该能够存储的最高值是

1111111111111111111111111111111111111111111111111111111111111111

由于计算机只能读取2个可能的值,这意味着上述数字可以表示为

2 ^ 64

这意味着整数可以读取的最高值最多为18,446,744,073,709,551,615

老实说,我甚至不明白如何存储高于此值的整数值。

1 个答案:

答案 0 :(得分:8)

Ruby使用Bignum个对象来存储大于2^64的数字。您可以看到here有关其工作原理的说明:

  

class_diagram

     

在左侧,您可以看到RBignum包含一个名为的内部结构   RBasic,包含所有Ruby使用的内部技术值   对象。下面我展示了Bignum对象的特定值:数字   和len。 digits是指向包含的32位值数组的指针   实际的大整数位分组为32组.len记录如何   许多32位组都在数字数组中。既然可以有   数字数组中的组数,Ruby可以任意表示   使用RBignum的大整数。