存储以下对象所需的最小字节数:
- 整数 - 介于 0 - 364847 之间
- 整数 - 介于 0 - 37337 之间
- 页面状态
- 正在使用中(我将使用单个位)
- 免费
- 肮脏的
- 模式
- 只读
- 只写
- 只执行
- 读写
- 阅读执行
- 读写执行
我认为至少需要 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/