2017-02-22 30 views
0

需要存儲的字節的最小數目以下對象:字節的最小數量需要

  1. 整數 - 之間0 - 364847
  2. 整數 - 之間0 - 37337
  3. 頁面狀態
    • 在使用(我將使用單個位)
    • 免費
  4. 模式
    • 只讀
    • 只寫
    • 僅執行的
    • 讀寫
    • 讀取執行
    • 讀取寫入執行

我認爲至少需要6個字節,但我不確定。另外,我們可以使用一個字節中的未使用位來存儲頁面狀態和模式嗎?

+0

您存儲了多少億的記錄,您需要關注每一個寶貴的位? – tadman

回答

1

理論極限(有算術打包)是log2(364848*37338*3*6) = 37.8352180528...比特每記錄小於5字節。但是訪問這樣打包的數據將需要昂貴的整數分區。仔細想想你是否真的想要這樣。

如果你讓每個字段佔用不同的位,你會得到ceil(log2(364848))+ceil(log2(37338))+ceil(log2(3))+ceil(log2(6)) = 40位,這正好是5字節,並允許通過簡單的位移和掩碼進行快速訪問。

+0

謝謝。我們不能只使用3位模式? 如果是RW,則設置Read = 1和Write = 1,依此類推。 (log2(364848))+ ceil(log2(37338))+ ceil(log2(3))+ ceil(log2(3))= 39' – Kattu

+0

@Kattu'6'是一些狀態,而不是位數。這將是'ceil(log2(364848))+ ceil(log2(37338))+ ceil(log2(3))+ 3',它自從'ceil(log2(6))= 3以來實際上是相同的40位'。 –

相關問題