Home Bitwise nuggets: get bit at position
Post
Cancel

Bitwise nuggets: get bit at position

Here is how to obtain the bit at a given position pos in an integer. Bit positions start at 0, and the bit at position 0 is the least significant bit (LSB).

The idea is to apply a mask to the integer, where the mask is all zeros except for a bit set at 1 at position pos. We obtain the mask by left-shifting 1 by pos bits. The mask is applied by AND-ing it with the number. If the result is 0, it means the bit at pos is also 0, otherwise its value is 1.

Here is the process described above, step-by-step, for getting the bit at position 6 in the number 2019:

1
2
3
4
mask:                  1
mask << 6:       1000000
2019:        11111100011
2019 & mask: 00001000000

We see that 2019 & mask is different than 0, so the bit at position 6 in 2019 is 1.

Let’s now get the bit at position 3 in 2019:

1
2
3
4
mask:                  1
mask << 3:          1000
2019:        11111100011
2019 & mask: 00000000000

Now the result is 0, so the bit at position 3 in 2019 is also 0.

Here is how this can be implemented in C:

1
2
3
4
5
6
// Returns the bit at position `pos` in the input `number`.
// The LSB is at position 0.
unsigned int get_bit_at_position(int number, int pos)
{
    return (number & (1 << pos)) != 0;
}

Want to see more bitwise logic? There’s a whole repository on my GitHub on bit fiddling.

This post is licensed under CC BY 4.0 by the author.

Bitwise nuggets: count set bits

Bitwise nuggets: clear the most significant bits up to a given position

Comments powered by Disqus.