Текущее направление:
Начните с символа без знака, который в моей системе составляет 1 байт, используя sizeof. Диапазон 0-255. Если длина - это количество бит, которое мне нужно, то elements - это количество элементов (байтов), которые мне нужны в моем массиве.
constant unsigned int elements = length/8 + (length % y > 0 ? 1 : 0);
unsigned char bit_arr[elements];
Теперь я добавляю базовые функции, такие как установка, отключение и проверка. Где j - это бит на байтовый индекс, i - это байтовый индекс, а h = битовый индекс. У нас i = h / 8 и j = i% 8.
Псевдо-код:
bit_arr[i] |= (1 << j); // Set
bit_arr[i] &= ~(1 << j); // Unset
if( bit_arr[i] & (1 << j) ) // Test
CHAR_BITS
сообщит вам, сколько бит находится вchar
(который совпадает с байтом в C, BTW - он определяется как наименьшая индивидуально адресуемая единица памяти). ‹/Pedantry› - person cHao   schedule 14.05.2011if( bit_arr[i] &= pow(2,j) )
для теста неверно, просто используйте&
, а не&=
. - person Random832   schedule 14.05.2011