计算 RAM 的位数

use*_*ser 6 operating-systems

考虑我有 30 位 RAM 来计算其大小:2^30 = 1073741824 / 10^9 = 1GB

如果我有例如 512 MB RAM 有什么公式可以将其转换为n-bit?这可能是菜鸟问题,但我不擅长数学:/

Ben*_*n N 17

您正在寻找一个logarithm,特别是一个以 2 为底的对数。对数与求幂相反,因此如果 b x = y,则 x = log b y。2 4 = 16,所以记录2 16 = 4。

首先,您需要弄清楚您有多少字节。如果您的数字以千字节为单位,则乘以 2 10。对于兆字节, 2 20,对于千兆字节 2 30,等等。如您所见,我使用的是这些单位的 1024 次幂定义,而不是 1000 次幂的定义,因此这里的 1 KB 是 1024 字节。1024 字节的明确名称是kibibyte。无论如何,512 MB 等于 512 • 2 20 = 536870912 字节。

现在你需要一个科学计算器。我喜欢Wolfram Alpha,它可以让你用这个log2函数做以 2 为底的对数。log2(536870912) 产生29,这是有道理的,考虑到 512 MB 是 1 GB 的一半,所以它需要的 2 次方少。您可以在 Wolfram Alpha 表达式中使用几乎任何可以想象的运算符,因此log2(512 * 10^20) 可以使用。

如果您得到一个带小数部分的数字,请四舍五入。例如,您需要三位来寻址五个字节的 RAM,尽管log2(5)大约是 2.32。

  • 仅供参考,[Google 也评估了`log2(536870912)` 就好了](https://www.google.com.au/search?hl=en&q=log2(536870912))。 (6认同)
  • 如果`log2()` 不可用,感觉可以提到`log(536870912) / log(2)`。 (4认同)