假设我有 30 位 RAM,计算其大小:2^30 = 1073741824 / 10^9 = 1GB
例如,如果我有 512 MB RAM,有没有公式可以将其转换为 512 MB n-bit
?这可能是一个新手问题,但我数学不好 :/
答案1
你正在寻找对数,具体来说是一个以 2 为底的对数。对数与指数运算相反,因此如果 b x = y,则 x = log b y。2 4 = 16,因此 log 2 16 = 4。
首先,您需要确定有多少字节。如果您的数字以千字节为单位,则乘以 2 10。对于兆字节,乘以 2 20,对于千兆字节,乘以 2 30,等等。如您所见,我使用的是这些单位的 1024 次方定义,而不是 1000 次方定义,因此这里的 1 千字节是 1024 字节。1024 字节的明确名称是千字节。无论如何,512 MB 等于 512 • 2 20 = 536870912 字节。
现在你需要一个科学计算器。我喜欢Wolfram Alpha,它可让您使用该函数进行以二为底的对数运算log2
。log2(536870912)
生产29,这是有道理的,因为 512 MB 是 1 GB 的一半,所以它需要的乘积是 2 的幂的一半。你可以在 Wolfram Alpha 表达式中使用几乎任何可以想象到的运算符,因此log2(512 * 10^20)
也有效。
如果得到的数字有小数部分,则向上舍入。例如,您需要三位来寻址五个字节的 RAM,但log2(5)
大约是 2.32。
答案2
除了 Ben 所说的,我建议先对数字取对数,不带单位
log₂512 = 9
然后考虑单位:10 表示千比字节,20 表示兆比字节,30 表示吉比字节,...
9 + 20 = 29
就是这样。无需计算巨大的数字。这是因为对数具有以下属性:
logₙ(a × b) = logₙ(a) + logₙ(b)
logₙ(aᵇ) = b × logₙ(a)
所以,
log₂(512 × 2²⁰) = log₂(512) + 20
但是,如果你已经知道log₂(1 GiB) = 30
,
log₂(512 MiB) = log₂(1 GiB / 2) = log₂(1 GiB) - log₂(2) = 30 - 1 = 29