9位运算
異或運算:^ --> 兩個變量,按照bit位比較,同位置 bit位相等 則結果為 0, 不相等,則結果為1
任意數 x x^x = 0; x^(~x) = 0xffffffff
x^0 = x; x^0xffffffff = ~x
或運算:|--> 把兩個變量, 按照bit位比較,同位置的bit位 有一個 為 1 ,則結果 為 1,只有兩個值都為 0 的情況,結果才 為0
與運算:&--> 把兩個變量, 按照bit位比較,同位置的bit位 有一個為 0, 則結果為 0,只有兩個值都為 1 的情況,結果才為1
事實上:| 和 || 很類似,只是說 | 是按照bit位一位位運算,& 和 && .............
教室里面有 32 盞燈, 我們怎么表示 這些燈的 打開關閉狀態 ?
-- 使用 32 個變量嗎 ?
-- 關閉第三個燈,打開其他所有燈?
可以使用 1 個 int 來表示 32 個燈的開關狀態:每個 bit位表示 1盞燈 (0關,1開)
if (a[5] == 0) a[5] = 1; else a[5] = 0;
比如說,原來32 個燈 開關狀態是 x
我們操作 x ----》 x = ~(1 << 29)
假如我們想打開 第 5 盞燈 (其他燈保持原狀態) x |= (1<<27)
--> 把第5個bit位置位1,其他bit位不變
假如我們想關閉 第 5 盞燈 (其他燈保持原狀態) x &= ~(1<<27)
--> 把第5個bit位置位 0,其他bit位不變
假如,我們想修改第5盞燈狀態 (其他燈保存原狀態) x ^= (1<<27)
--> 把第5個bit位取反
假如我們想 獲取第 5 盞燈的狀態? --> x & (1<<27)
--> 結果為 0 表示關閉,非0表示打開
--> (這個非0值, 就是 1<<27)
#define LED_1 1
#define LED_2 2
#define LED_3 4
#defien LED_4 8
......(10, 20, 40, 80, ....)
int led_stat
判斷第 N 個燈狀態 --》 led_stat & LED_N
總結
- 上一篇: 安防监控 —— 软硬件环境分析与通信协议
- 下一篇: 华为S5700交换机初始化和配置SSH和