Back over on BooleanRepresentation, DaveHarris wrote that
Using 1 for true means that true can be storedin a 1-bit BitField
Here's another C idiom for you -- you must be careful when coding for 1-bit bitfields, because they have a portable range of 0, since the compiler may use either signed or unsigned bitfields by default.
I quote from WritingSolidCode, by SteveMaguire:
"The bit field does have a non-zero state -- you just don't know what it is. The value can be either -1 or 1 [...]. You can safely use both states of the bit field if you restrict all your comparisons to 0."
Therefore, always explicitly mark 1-bit bit fields as unsigned:
Note that signed bit-fields might not even be able to contain -1,
this is true in computers that use 1-complement for representing signed int's.
A signed bit-field that can contain 1 is a bug in the compiler.
-- StephanHoubenBitFields also have the problem that the issue of MSB first or LSB first is undefined. (See ErlangBitSyntax for more).
I always use #define to make bitmasks when I need to do bit-frobbing.