2

非常に大きな値のマスク (各 2^32 ビット、約 .5 GB) を管理する C++ ライブラリに取り組んでいます。各値マスクは、32 ビット int の可能な値を表します。たとえば、00101000は値 2 と 4 を表します。各値マスクには、主に反復データが含まれます (例: 01010000010100000101000001010000)。

2 つの値のマスクの値に対してビット単位の操作をやや簡単に行える、ある種の圧縮アルゴリズムを探しています。明確化: 値マスク自体ではなく、値に対してビット演算を実行したくありません。以下の例を参照してください。

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

クラスには次の演算子が含まれます: +、-、&、|、^、~、<<、>>

明らかに、値マスクを解凍せずに、これらの演算子のいくつかの結果を計算できれば、非常に便利です。圧縮アルゴリズムがこれらすべてを実行できるとは思えませんが (チャレンジ、誰か?)、このようなもののための既存のライブラリまたはアルゴリズムはありますか?

4

0 に答える 0