用位运算标记状态

最多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    //判断是否在加血

详见以下转载:用位运算标记状态

猜你喜欢

转载自blog.csdn.net/weixin_38230961/article/details/81772536
今日推荐