1.符号:
&
:按位与
|
:按位或
~
:按位取反
^
:按位异或
<<
:位左移(左移出的数据丢弃,右侧补0)
>>
:位右移(右移出的数据丢弃,左侧补0)
2.运算(改变flags的位值):
(1)打开位(置1位):
flags |= MASK;
flags = flags | MASK;
MASK
为 1 的位被打开(置1)
MASK
为 0 的位不改变
(2)关闭位(清零位):
flags &= ~(MASK);
flags = flags & ~(MASK);
MASK
为 1 的位被关闭(置0)
MASK
为 0 的位不改变
(3)切换位:
flags ^= MASK;
flags = flags ^ MASK;
MASK
为 1 的位被切换
MASK
为 0 的位不改变
(4)位左移、位右移:
flags<<n; // flags位左移n位
flags>>n; // flags位右移n位