16进制枚举状态机学习

转自:https://blog.csdn.net/wodeni512517/article/details/71123469

1.介绍

十六进制:

typedef enum
{ 
  ACTION_SHOWCARDS = 0x01, //1
  ACTION_FOLLOW = 0x02, //2
  ACTION_ADDANTE = 0x04, //4
  ACTION_GIVEUP = 0x08, //8
  ACTION_COMPARE = 0x10,//16
} ActionState;

这样一个枚举表示一个状态,可以通过或运算|表示多个状态,再通过与运算&可以提取状态,例子:

typedef enum
{ 
  ACTION_SHOWCARDS = 0x01, 
  ACTION_FOLLOW = 0x02, 
  ACTION_ADDANTE = 0x04, 
  ACTION_GIVEUP = 0x08, 
  ACTION_COMPARE = 0x10,
} ActionState;
int main(){
    int  a = ACTION_SHOWCARDS | ACTION_FOLLOW | ACTION_ADDANTE;
    printf("%d\n", a);
    printf("%d\n", a & ACTION_GIVEUP);
    printf("%d\n", a & ACTION_FOLLOW);

    return 0;
}

//打印结果
7
0
2

也可以使用二进制,上述链接中有提到。//但看起来没有16进制公工整,这里就不写了。

posted @ 2023-01-17 00:35  lypbendlf  阅读(121)  评论(0编辑  收藏  举报