位运算符:
位运算符作用于操作数的位(bit)。
按位与(&)对应位都为1时结果为1
int a = 5; // 0101
int b = 3; // 0011
int result = a & b; // 0001
按位或(|)对应位至少有一个为1时结果为1,否则为0
int a = 5; // 0101
int b = 3; // 0011
int result = a | b; // 0111
按位异或(^)对应位不同为1相同为0
int a = 5; // 0101
int b = 3; // 0011
int result = a ^ b; // 0110
按位非(~)将所有位取反
int a = 5; // 0101
int result = ~a; // 1010(注意:结果取决于整数的位数)
左移(<<)向左移动指定的位数,空缺补0
int a = 5; // 0101
int result = a << 1; // 1010
右移(>>)向右移动指定的位数,空缺补0
int a = 5; // 0101
int result = a >> 1; // 0010
标记位传参:
标记位传参是指通过位运算的方式传递参数。
// 使用 #define 定义位标志
#define ENABLE_LOGGING (1 << 0)
#define AUTO_SAVE (1 << 1)
#define FULLSCREEN (1 << 2)// 配置函数,接受一个整数参数
void configureApp(int flags) {if (flags & ENABLE_LOGGING) {// 启用日志记录}if (flags & AUTO_SAVE) {// 启用自动保存}if (flags & FULLSCREEN) {// 启用全屏模式}
}