最初の 6 ビットで 6 つのオン/オフ フラグを使用し、最後の 2 ビットを使用して 4 つの異なる値を保持します。これは非常に基本的なことで、このようなマクロがどこかに存在するはずですが、見つかりません。
#define HOT 0x00
#define BIG 0x01
#define FAT 0x02
#define HIT 0x03
#define BAT 0x04
#define ZAX 0x05
#define HOW 0x06
#define TWO_BITS nnn // ???
#define CONDITION_0 nnn // bit combo: 00
#define CONDITION_1 nnn // bit combo: 01
#define CONDITION_2 nnn // bit combo: 10
#define CONDITION_3 nnn // bit combo: 11
void bitter(void)
{
unsigned char myBits = 0;
bool nonsense;
if (myBits & BIG) nonsense = true; // BIG flag on
if (!(myBits & BAT)) nonsense = false; // BAT flag off
myBits = myBits | BIG; // turn on BIG bit
myBits = myBits & ~BIG; // turn off BIG bit
if (TWO_BITS == CONDITION_0)
doThis();
else if (TWO_BITS == CONDITION_1_)
doThat();
// ... etc
}
では、これらの最後の 2 ビットでやりたいことをコーディングする最良の方法は何ですか? コードの書き方がわからないため、パフォーマンス テストを行うことはできませんでしたが、これがこの種の操作を実行する最速の方法であると想定しています。
[ところで、これは宿題のようなにおいがするかもしれませんが、私は新しいトリックを学ぼうとしている 54 歳の犬です。]