Gee, I'm really late,
. . . but I figured somebody might search for this as I did and find the responses a little pale to their tastes. I don't know that this answer deserves a whole FAQ, but I think the question deserves at least this much respect:
A bitset is a container object (at one time included in the STL or Standard Template Library, but I haven't kept up with the C++ standard, so I don't know whether it's still there . . . ) that holds a structure for a string of bits. In some ways, "string of bits" is appropriate, in other ways it isn't: Some implementations (one of the standards, anyway) provide for access to the internal structure as a string so that it may be printed, and in many implementations passed to the template as a string initializer. As the previous contributors have suggested, it can be thought of as a string of 1's and 0's (although we only had l's O's and /'s when I started), but it represents the off/on or high/low position of a series of bits that are often used for a series of "switches," or booleans that can be thought of as the result or the precursors to some decision(s).
The way a bitset is implemented matters -- particularly in terms of how much space you will save over using a set of booleans or another "choice structure." Booleans are generally (though not always) implemented as a full byte (but could be as large as a word in order to use a single register). It is hard to know whether a compiler builder will economize and offer you a byte in which bits will be allocated for booleans, but the economy just doesn't seem to work with the complexity of writing a compiler, so I'd guess it isn't often seen. For this reason you will often see C-code inserted using bitfields (which are often implemented using an unsigned word).
A bitset offers you the flexibility of doing many of the same things with all the adornments of a "standard" template container: Implementation invisible to those who don't care and member functions that manipulate it in a convenient way.
I hope this helps somebody: I probably educated myself a little in trying to write something that would hold in the lion's share of cases.