Search code examples
c#javac++c

How to unset a specific bit in an integer


Say, I have a integer like 10101, I would like to unset the third bit to get 10001; if I have 10001, I will still get 10001; how can I achieve it?

unset(int i, int j)
int i= 10101 or 10000
int j = 00100

Solution

  • Assuming that you are indexing bits from the right, this should work to unset a particular bit in value:

    int mask = 1 << bitIndex;
    value &= ~mask;
    

    You can set the bit using similar code:

    value |= mask;
    

    where mask is as before. (This assumes that bit indexing starts at 0.)