У меня есть массив целых чисел, допустим, они имеют тип int64_t
. Теперь я знаю, что только каждый первый бит n
каждого целого числа имеет смысл (то есть, я знаю, что они ограничены некоторыми ограничениями).
Каков наиболее эффективный способ преобразования массива в способ удаления всего ненужного пространства (т.е. у меня есть первое целое число в a[0]
, второе в a[0] + n bits
и т.д.)?
Я хотел бы, чтобы он был как можно более общим, потому что n
время от времени будет меняться, хотя я предполагаю, что могут быть умные оптимизации для конкретных n
, таких как полномочия 2 или sth.
Конечно, я знаю, что могу просто перечислить ценность за ценность, я просто хочу спросить вас, как StackOverflowers, если вы можете подумать о более умном способе.
Edit:
Этот вопрос заключается не в том, чтобы сжать массив, чтобы как можно меньше пространства. Мне просто нужно "вырезать" n bits
из каждого целого числа, и, учитывая массив, я знаю точный n
бит, который можно безопасно разрезать.