所需的最小字节数

时间:2017-02-22 21:54:05

标签: linux memory-management memory-efficient

存储以下对象所需的最小字节数:

  1. 整数 - 介于0 - 364847之间
  2. 整数 - 介于0 - 37337之间
  3. 页面状态
    • 使用中(我将使用单个位)
    • 免费
  4. 模式
    • 只读
    • 只写
    • 仅执行
    • 读写
    • 阅读执行
    • 读写执行
  5. 我认为最少需要6个字节,但我不确定。另外,我们可以使用字节内未使用的位来存储页面状态和模式吗?

1 个答案:

答案 0 :(得分:2)

理论上的限制(使用算术打包)是每条记录log2(364848*37338*3*6) = 37.8352180528...位,小于5字节。但访问如此打包的数据将需要昂贵的整数除法。如果你真的想要,请仔细考虑。

如果让每个字段占用不同的位,则会得到ceil(log2(364848))+ceil(log2(37338))+ceil(log2(3))+ceil(log2(6)) = 40位,这恰好是5个字节,并允许通过简单的位移和屏蔽进行快速访问。