Можно сделать функции для записи и чтения бита. Вот пример для одномерного массива:
CODE
#define NUMBITS 123
uint8_t bits[(NUMBITS + 7) / 8];
int getbit(uint8_t *src, int n)
{
return !!(src[n / 8] & (1 << (n % 8)));
}
void putbit(uint8_t *dst, int n, int val)
{
dst += n / 8;
if (val == 0)
{
*dst &= ~(1 << (n % 8));
}
else
{
*dst |= (1 << (n % 8));
}
}
int main(void)
{
putbit(bits, 34, 1);
printf("%d", getbit(bits, 34));
}