问题一: 为什么要抛弃低位,不抛弃高位?(比如红色就可以是:r & 0x1f)
上面24位色反过来逆运算获得每一个分量我们已经知道了,那么:
问题二: 怎么获得RGB565颜色color16中的每一个分量。
上面的颜色了解后,我相信大家对于& | << >>这几个该没有什么问题了吧,当然颜色的组合还有其他的,这里不是为了介绍颜色。而是为了了解位运算。
位运算很灵活,这里只是一个基本的介绍。更多的还需要大家多实践。
了解了上面的几个运算符,下面介绍剩下的两个:按位取反和按位异或。
在实际的工作中,通常会有一些状态需要表示。我们这些状态又想节约一点空间。于是我们选择了用一个32位的无符号整数来存放这些状态。比如:
在游戏里面,某个玩家的一些状态也就是我们经常说的BUFF,比如:持续加血,持续加蓝,持续加体力,经脉受伤,被点穴等等。于是我们就有一个枚举:
enum EPLAYER_STATE
{
EPST_NONE = 0x00000000, // 没有状态
EPST_ADDHP = 0x00000001 , // 加血
EPST_ADDMP = 0x00000002, // 加蓝
EPST_ADDSP = 0x00000004, // 加体力
EPST_JMDAM = 0x00000008, // 经脉受伤
EPST_DIANX = 0x00000010, // 被点穴
EPST_XUANY = 0x00000020, // 被眩晕
EPST_ATTCK = 0x00000040, // 被攻击
// .