什么是在小内存中存储大量二进制数的最佳方式(小于50 MB)

时间:2014-11-04 16:40:05

标签: algorithm data-structures

例如,我需要存储1,000,000(或多个数量级)二进制数。我的不到50 MB。布尔类型数组如何占用空格?

我首先尝试使用整数数组来实现,但它需要大量内存,这在例如大多数情况下是不可接受的。嵌入式设备。

我是否还可以使用二进制形式的整数来表示8个二进制数字,这可以减少整数的数量(虽然只减少了8倍)?

2 个答案:

答案 0 :(得分:2)

如果您的数字受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)))

答案 1 :(得分:1)

您可以尝试使用compressed bitwise trie