Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby如何存储大量数据?_Ruby_Binary_Integer_64 Bit_Largenumber - Fatal编程技术网

Ruby如何存储大量数据?

Ruby如何存储大量数据?,ruby,binary,integer,64-bit,largenumber,Ruby,Binary,Integer,64 Bit,Largenumber,Ruby可以存储非常大的数字。现在我想起来了,我甚至不知道这怎么可能 计算机以两位数(0和1)的序列存储数据。这被称为二进制表示法。但是,它们可以存储的数字大小是有限制的 目前大多数操作系统都以64位运行。这意味着变量的最高可分配地址空间为64位 整数存储在基数为2的系统中,这意味着计算机应该能够存储的最高值是 1111111111111111111111111111111111111111111111111111111111111111 由于计算机只能读取2个可能的值,这意味着上述数字可以表

Ruby可以存储非常大的数字。现在我想起来了,我甚至不知道这怎么可能

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

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

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

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

2 ^ 64
这意味着一个整数可以读取的最大值应该是18446744073709551615

老实说,我甚至不明白怎么可能存储比这更高的整数值。

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

在左边,您可以看到RBignum包含一个名为 RBasic,它包含所有Ruby使用的内部技术值 物体。下面我将显示特定于Bignum对象的值:digits 还有莱恩。digits是指向包含 实际大整数的位分组为32位。莱恩如何记录 数字数组中有许多32位组。既然可以有 数字数组中的组数,Ruby可以任意表示 使用RBignum的大整数


你知道如何在内存中存储大于64字节的二进制文件吗?现在想象一下,该文件包含一个非常大的整数的二进制值……很简单,它不依赖于64位。虽然我不打算讨论细节(因为我没有完全了解它们),但您想看看BigNum和BigDecimal。你怎么能只用10个手指就能储存大量的数字呢?有趣的解释。我听说过Bignum类,并且知道Ruby可以存储非常大的数字。但不确定它是如何做到的。非常感谢你的解释。