簡體   English   中英

在小內存中存儲大量二進制數的最佳方法是什么(小於50 MB)

[英]what's the optimal way to store large amount of binary numbers in small memory (less than 50 MB)

例如,我需要存儲1,000,000(或多個數量級)二進制數。 我的不到50 MB。 布爾類型數組如何占用空格?

我首先嘗試使用整數數組來實現,但它需要大量內存,這在例如嵌入式設備中是不可接受的。

我還可以使用二進制形式的整數來表示8個二進制數字,這可以減少整數的數量(雖然只減少了8倍)?

如果您的數字受MAX限制,則可以使用Ceil(MAX / 8)字節在每個字節中存儲8個布爾值

Set Nth bit in array:
ByteArr[N div 8] = ByteArr[N div 8] OR (1 << (N mod 8))
Clear Nth bit in array:
ByteArr[N div 8] = ByteArr[N div 8] AND !(1 << (N mod 8))
Get Nth bit:
BoolResult = 0 <> (ByteArr[N div 8] AND (1 << (N mod 8)))

您可以嘗試使用壓縮的按位trie

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM