javabit-manipulationflags

Checking flag bits java


I have a problem with flag bits. I have an int variable to hold flags. First I set some flags to that variable. Later I need check how many flags were set in that variable. But I don't know to do it.


Solution

  • To check to see if a bit value is set:

    int value = VALUE_TO_CHECK | OTHER_VALUE_TO_CHECK;
    
    if ((value & VALUE_TO_CHECK) == VALUE_TO_CHECK)
    {
        // do something--it was set
    }
    
    if ((value & OTHER_VALUE_TO_CHECK) == OTHER_VALUE_TO_CHECK)
    {
        // also set (if it gets in here, then it was defined in 
        //   value, but it does not guarantee that it was set with
        //   OR without other values. To guarantee it's only this
        //   value just use == without bitwise logic)
    }
    

    It's important to note that you should not have a checked value as 0 unless it represents All or None (and don't use bitwise logic to compare; just use value == 0) because any value & 0 is ALWAYS 0.