最多32个状态,但是足矣。为什么是32?int通常最大值是大约二十亿(32 位有符号),即2^32
0x00000001 换成2进制 0b0001
0x00000002 换成2进制 0b0010
0x00000004 换成2进制 0b0100
0x00000008 换成2进制 0b1000
0x00000010
0x00000020
0x00000040
0x00000080
...
0x10000000
0x20000000
0x40000000
0x80000000
这32个状态是完全独立的,用来标记状态互不影响
多个状态 | 运算就是叠加,最终状态 & 某个特定状态 就是判断有没有此特定状态,如下
0x00000001 //加血
0x00000002 //加蓝
0x00000001 | 0x00000002 =》 0x00000003 //同时加血加蓝
0x00000001 & 0x00000003 =》 0x00000001 //判断是否在加血
详见以下转载:用位运算标记状态