Dingo (28.09.2018 05:21 - 05:41, просмотров: 429) ответил AlexG на Когда событий станет больше, придется переписывать, но пока хватает с запасом
Корявенько, конечно, но я делал так uint8_t заменить на что вам надо и "8" поменять на соответствующую ширину. Довести до ума бы хорошо, делюсь "как есть".
#define BIT_WIDTH 128
uint8_t bitStore[BIT_WIDTH/8];
bool TestBit( uchar bitNum) // 0..255
{
uchar idx = bitNum / 8;
uchar bitN = bitNum % 8;
return ( (bitStore[idx] & (1<<bitN))!=0 );
}
void WriteBit(uchar bitNum), char bitVal) // 0..255, == 0 | != 0
{
uchar idx = bitNum / 8;
uchar bitN = bitNum % 8;
if ( bitVal == 0) {
bitStore[idx] &= ~(1<<bitN);
} else {
bitStore[idx] |= (1<<bitN);
}
}