快速位压缩和算术

时间:2013-05-18 01:34:35

标签: c++ algorithm compression bit-manipulation bitmask

我正在使用C ++库来管理非常大的值掩码(每个2 ^ 32位,大约0.5 GB)。每个值掩码将表示32位int的可能值。例如,00101000表示值2和4.每个值掩码将包含大多数重复数据(例如:01010000010100000101000001010000)。

我正在寻找某种压缩算法,它允许对两个值掩码的值进行一些简单的按位操作。澄清:我不想对值掩码本身进行逐位运算,而是值。见下面的例子:

ValMask mask_a(0b00101000); // Represents 2 and 4
ValMask mask_b(0b10110000); // Represents 0, 2 and 3

// Sum all of the values of mask_a and mask_b
ValMask mask_c = mask_a + mask_b;
// mask_c is 0b00101111, which represents 2, 4, 5, 6, 7

我的课程将包括以下操作符:+, - ,&,|,^,〜,<<和>>

显然,如果我可以在不解压缩值掩码的情况下计算其中一些运算符的结果,那将是非常好的。我怀疑任何压缩算法都可以做所有这些(挑战,任何人?),但有没有现有的库或算法这样的东西?

0 个答案:

没有答案