我试图在一个字符中表示一堆值:前 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 岁的狗,正在努力学习一些新技巧。]