linux - 所需的最小字节数

标签 linux memory-management memory-efficient

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

  1. 整数 - 介于 0 - 364847 之间
  2. 整数 - 介于 0 - 37337 之间
  3. 页面状态
    • 正在使用中(我将使用单个位)
    • 免费
    • 肮脏的
  4. 模式
    • 只读
    • 只写
    • 只执行
    • 读写
    • 阅读执行
    • 读写执行

我认为至少需要 6 个字节,但我不确定。另外,我们可以使用字节中未使用的位来存储页面状态和模式吗?

最佳答案

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

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

关于linux - 所需的最小字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42403006/

相关文章:

linux - 如何在每个父目录中打印最后一个目录

c - 64 位但不是 32 位构建中的 glib.h 负数组大小错误

c - Pthreads - 高内存使用率

linux - Bash 等待多个同时的子进程并在出错时杀死所有子进程

linux - 从 cron 运行时,顶级命令输出为空

objective-c - 使用点语法设置保留属性时使用自动释放?

OpenGL GPU内存清理,需要吗?

c - 解决 munmap 警告消息

performance - 更高效的查询以避免 Hive 中的 OutOfMemoryError

ios - 在 UITableViewCell 中制作 View 网格的最佳方法