как можно в обычной переменной изменить значение третьего бита или получить его значение
int v = 8;
int v3 = (v >> 3) & 1; // получил значение третьего бита (0/1)
v ^= (1 << 3); // инвертировал третий бит
v |= (1 << 3); // установил третий бит
v &= ~(1 << 3); // сбросил третий бит
uint x = 10;
int value = (x & 0x8) >>2;
#include <stdio.h>
struct __attribute__ ((__packed__)) A {
unsigned flag0 : 1;
unsigned flag1 : 2;
unsigned flag2 : 2;
unsigned flag3 : 3;
};
int main() {
A a = {1, 0, 2, 7};
printf("%d\n", sizeof(bool)); // 1
printf("%d\n", sizeof(A)); // 1
printf("%u %u %u %u\n", a.flag0, a.flag1, a.flag2, a.flag3); // 1 0 2 7
return 0;
}