位運算符:
位運算符作用于操作數的位(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) {// 啟用全屏模式}
}