Быстрое сжатие битов и арифметика

Я работаю над библиотекой C ++ для управления масками очень больших значений (каждая 2 ^ 32 бита, около 0,5 ГБ). Каждая маска значений будет представлять возможные значения 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

Мой класс будет включать эти операторы: +, -, &, |, ^, ~, <<и >>

Очевидно, было бы очень хорошо, если бы я мог вычислить результат некоторых из этих операторов, не распаковывая маску значений. Я сомневаюсь, что любой алгоритм сжатия может сделать все это (вызов, кто-нибудь?), Но есть ли какие-либо существующие библиотеки или алгоритмы для чего-то вроде этого?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]