У меня длинная последовательность бит, хранящаяся в массиве беззнаковых длинных целых чисел, вроде этого
struct bit_array
{
int size; /* nr of bits */
unsigned long *array; /* the container that stores bits */
}
Я пытаюсь создать алгоритм для изменения порядка бит в * массиве. Проблемы:
-
size
может быть любым, то есть не обязательно кратным 8 или 32 и т.д., поэтому первый бит во входном массиве может оказаться в любой позиции в unsigned long в выходном массиве; - алгоритм должен быть независимым от платформы, т.е. работать для любого
sizeof(unsigned long)
.
Код, псевдокод, описание алгоритма и т.д. - приветствуется что-либо лучше, чем метод bruteforce ( "побитно" ).