本博文摘录自王建伟的《C++新经典》
1.位运算简介
1)按位与运算符”&”
全1才为1,否则为0
38 & 22 = 6
100110 & 010110
2)按位或运算符 “|“”
有1才为1
3)按位异或运算符“^”
同为0或同为1才为1,其余为0
4)取反运算符“~”
0变成1,1变成0
5)左移运算符“<<”
左移相当于乘2
6)右移运算符“>>”
右移一位,相当于除2
2.位运算的具体应用(例如玩家的日常任务是否完成)
表示玩家日常任务,比如有10个日常任务,如何表示玩家完成
用一个unsigned int task,4字节有32位字节表示就可以表示32个日常任务是否完成
#define BIT(x) (1 << (x))
enum EnumTask
{
ETask1 = BIT(0);
ETask2 = BIT(1);
ETask3 = BIT(2);
ETask4 = BIT(3);
ETask5 = BIT(4);
ETask6 = BIT(5);
ETask7 = BIT(6);
ETask8 = BIT(7);
ETask9 = BIT(8);
ETask10 = BIT(9);
};
unsigned int task = 0;
if(task & ETask7)
{
printf("任务已经做了!\n");
}
else
{
printf("任务还没做!\n");
task = task | ETask ;
}
|