Sprawdzenie stanu bitu w C

0
#include <stdio.h>
#include <stdint.h>

unsigned char a= 0;

int main()
{
    a |= (1<<7);
    printf("%d\n", a);
    printf("%d\n", a&(1<<7));
    return 0;
} 

Wynik to:
128
128
nie powinno być:
128
1
?

0

Nie. Bo ten bit jest na pozycji nr 7, więc musisz go przesunąć do najmniej znaczącej pozycji (>>7).

1

Nie rozumiem o co chodzi Pijany Samiec ale działa to tak, że:
a na początku wynosi 00000000, następnie ustawiasz bit na 7 pozycji i masz 10000000 a to = 128. Potem wykonujesz na tym i na (7<<1 co jest = 128) ANDa.
10000000
10000000 &

10000000 = 128

1 użytkowników online, w tym zalogowanych: 0, gości: 1