例如,当我们使用数组时,分配a [10000] = 3,它首先将10000 * sizeof(int)添加到a的内存地址,然后访问该内存地址。问题是,为什么访问这样的内存地址只需要O(1)时间?基本上,随机存取存储器背后的魔力是什么,它需要花相同的时间访问地址#1和地址#1,000,000?
答案 0 :(得分:1)
根据定义,随机存取存储器是可以在恒定的时间内在任何地址提供内容的存储器。那是“随机访问”位,它与其他类型的内存有何区别。
不涉及任何魔术;只有n个位置,访问内存的人都会提供选择其中一个的详细信息。
在大多数实现中,每个存储字都是相同的电子产品。您只需选择连接到总线的那个。
答案 1 :(得分:0)
例如,分配
a[10000] = 3
,它的作用是首先将10000 * sizeof(int)
添加到a
的内存地址,然后访问该内存地址。
完全正确。许多CPU具有单一寻址模式,以相对于基址的偏移量访问数据,其中基数是固定数字,而偏移量在寄存器中,反之亦然。
随机存取存储器背后的魔力是什么,它使得访问地址#1与地址#1,000,000所需的时间相同?
相同的“魔术”功能,使您可以在固定的时间内将两个数字相加,而不考虑所添加数字的值。换句话说,将1
或1000000
添加到2000000000
的基数中都没关系:它需要相同的循环数。