C - Get a bit from a byte
52,678
Solution 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.
Solution 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);
Solution 3
Use the & operator to mask to the bit you want and then shift it using >> as you like.
Author by
luanoob
Updated on August 01, 2022Comments
-
luanoob almost 2 years
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
-
Filip Roséen - refp over 12 yearsThird; off-by-one error.
-
tobahhh about 6 yearsJust helping those who may be less familiar with binary, bit 3 is actually the fourth digit from the right, i.e., 11110 If you wanted to get the third digit from the right, you would right shift 2, the fifth, 4, etc.