C - Get a bit from a byte [duplicate]

2019-03-21 13:23发布

问题:

Possible Duplicate:
how to get bit by bit data from a integer value in c?

I have a 8-bit byte and I want to get a bit from this byte, like getByte(0b01001100, 3) = 1

回答1:

Firstoff, 0b prefix is not C but a GCC extension of C. To get the value of the bit 3 of an uint8_t a, you can use this expression:

((a >> 3)  & 0x01)

which would be evaluated to 1 if bit 3 is set and 0 if bit 3 is not set.



回答2:

First of all C 0b01... doesn't have binary constants, try using hexadecimal ones. Second:

uint8_t byte;
printf("%d\n", byte & (1 << 2);


回答3:

Use the & operator to mask to the bit you want and then shift it using >> as you like.