Why not use: x = !x;?

Not bool in the sense of C++ type.

A signed char can indeed be used to represent 8 independent binary states, one per bit (leading to 256 possible global states in total)