Ruby如何存储大量数据? [重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

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

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

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

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

1111111111111111111111111111111111111111111111111111111111111111

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

2 ^ 64

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

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

ruby binary integer 64bit largenumber
1个回答
8
投票

Ruby使用Bignum对象来存储大于2^64的数字。你可以看看here如何工作的描述:

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

© www.soinside.com 2019 - 2024. All rights reserved.