How to check if a particular bit is set in C#

user489041 picture user489041 · Nov 8, 2011 · Viewed 18k times · Source

In C#, I have a 32 bit value which I am storing in an int. I need to see if a particular bit is set. The bit I need is 0x00010000.

I came up with this solution:

Here is what I am looking for:

Hex:       0    0    0    1     0    0    0    0    0 
Binary   0000|0000|0000|0001|0000|0000|0000|0000|0000

So I right bit shift 16, which would give me:

Hex:       0    0    0    0     0    0    0    0    1
Binary   0000|0000|0000|0000|0000|0000|0000|0000|0001

I then bit shift left 3, which would give me:

Hex:       0    0    0    0     0    0    0    0   8 
Binary   0000|0000|0000|0000|0000|0000|0000|0000|1000

I then case my 32 bit value to a byte, and see if it equals 8.

So my code would be something like this:

int value = 0x102F1032;
value = value >> 16;
byte bits = (byte)value << 3;
bits == 8 ? true : false;

Is there a simpler way to check if a particular bit is set without all the shifting?

Answer

Matt DeKrey picture Matt DeKrey · Nov 8, 2011

You can use the bitwise & operator:

int value = 0x102F1032;
int checkBit = 0x00010000;
bool hasBit = (value & checkBit) == checkBit;