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.

Share:
52,678
luanoob
Author by

luanoob

Updated on August 01, 2022

Comments

  • luanoob
    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
    Filip Roséen - refp over 12 years
    Third; off-by-one error.
  • tobahhh
    tobahhh about 6 years
    Just 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.