我可能更像是一个数学问题,但这个问题源于在虚拟内存一章中阅读我的计算机系统书...所以我觉得有理由在这里问一下。
这本书指出:
每个虚拟页面的大小为 P = 2 p 字节。
我的代数生锈了,这可能是我需要问这个问题的原因。现在,我正在看一个例子,我们知道P = 1024
。这是否意味着我可以通过简单地确定哪个p
将
1024 = 2 ptrue来确定
p
是什么?
如果我的顿悟是真实的,那么1024 = 2 10 应该是我的答案。那是P=1024
和p=10
。
答案 0 :(得分:3)
是肯定的。这只是一个像其他任何一个方程式。
答案 1 :(得分:2)
是强>
为了解决p
,您需要使用对数函数base 2
。解决
P = log(p, 2)
或
10 = log(1024, 2)
如果你没有可用的方便的对数功能,你可以设置基数,你可以使用它。有趣的是,只要它们是相同的,在两个函数中使用哪个日志库并不重要:
P = log(p) ÷ log(2)
对数是指数的对立面 - 它们只是一种计算必须将数字乘以其自身以获得答案的次数的方法,扩展到支持答案不是原始数字的整数幂的情况
希望这有帮助。
答案 2 :(得分:0)
我认为这个问题是在没有编程相关的边界上,但无论如何,f(x)=a
x
的倒数是g(x)=log(x)/log(a)
。您只需要获得P = 1024的基数2对数即可找到p
,即10。
答案 3 :(得分:0)
你要求的是二进制对数(ld n)。你通过重复除以2来计算它,当你达到1时断开,并计算你划分的频率(实际上只是它的积分部分+ -1,但是对于2的幂,对数是一个自然数)。