Я хотел бы иметь список битов, где я могу выполнять математические операции над частью списка, например.
value: 864
as bits, pos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
as bits, value: 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0
Если я беру биты с 1 по 4 и с 6 по 9, я получаю 0, 1, 1, 0, 1, 0, 0, 0 (104). Затем, если я добавлю 3, он станет 0, 1, 1, 0, 1, 0, 1, 1 (107).
Я мог бы сделать это с помощью std :: vector и процесса, включающего побитовые операции между битами, с кодом, который выглядит подобным образом if (xor (data [n], data [n2])) {data [n - 1] == false;} и т.д ...
Я мог бы даже использовать POD-массивы, но я думал, что C ++, находящийся так близко к внутренним частям компьютера, часто оказывается бесполезным, но здесь он может позволить выполнить эту операцию чрезвычайно быстро.
Что-то вроде сохранения значений в большой переменной POD или в массиве с последующим копированием их в память другой переменной, чтобы можно было выполнить математические операции перед тем, как снова скопировать их обратно в позицию в этом хранилище?
Еще лучше, например, может ли оператор сложения каким-либо образом использовать эту позицию в памяти в качестве параметра для выполнения сложения непосредственно в середине хранилища данных?