Search code examples
c#bit-manipulation

Set a specific bit in an int


I need to mask certain string values read from a database by setting a specific bit in an int value for each possible database value. For example, if the database returns the string "value1" then the bit in position 0 will need to be set to 1, but if the database returns "value2" then the bit in position 1 will need to be set to 1 instead.

How can I ensure each bit of an int is set to 0 originally and then turn on just the specified bit?


Solution

  • If you have an int value "intValue" and you want to set a specific bit at position "bitPosition", do something like:

    intValue = intValue | (1 << bitPosition);
    

    or shorter:

    intValue |= 1 << bitPosition;
    

    If you want to reset a bit (i.e, set it to zero), you can do this:
    intValue & ~(1 << bitPosition);
    

    (The operator ~ reverses each bit in a value, thus ~(1 << bitPosition) will result in an int where every bit is 1 except the bit at the given bitPosition.)