9位运算
異或運(yùn)算:^ --> 兩個(gè)變量,按照bit位比較,同位置 bit位相等 則結(jié)果為 0, 不相等,則結(jié)果為1
任意數(shù) x x^x = 0; x^(~x) = 0xffffffff
x^0 = x; x^0xffffffff = ~x
或運(yùn)算:|--> 把兩個(gè)變量, 按照bit位比較,同位置的bit位 有一個(gè) 為 1 ,則結(jié)果 為 1,只有兩個(gè)值都為 0 的情況,結(jié)果才 為0
與運(yùn)算:&--> 把兩個(gè)變量, 按照bit位比較,同位置的bit位 有一個(gè)為 0, 則結(jié)果為 0,只有兩個(gè)值都為 1 的情況,結(jié)果才為1
事實(shí)上:| 和 || 很類(lèi)似,只是說(shuō) | 是按照bit位一位位運(yùn)算,& 和 && .............
教室里面有 32 盞燈, 我們?cè)趺幢硎?這些燈的 打開(kāi)關(guān)閉狀態(tài) ?
-- 使用 32 個(gè)變量嗎 ?
-- 關(guān)閉第三個(gè)燈,打開(kāi)其他所有燈?
可以使用 1 個(gè) int 來(lái)表示 32 個(gè)燈的開(kāi)關(guān)狀態(tài):每個(gè) bit位表示 1盞燈 (0關(guān),1開(kāi))
if (a[5] == 0) a[5] = 1; else a[5] = 0;
比如說(shuō),原來(lái)32 個(gè)燈 開(kāi)關(guān)狀態(tài)是 x
我們操作 x ----》 x = ~(1 << 29)
假如我們想打開(kāi) 第 5 盞燈 (其他燈保持原狀態(tài)) x |= (1<<27)
--> 把第5個(gè)bit位置位1,其他bit位不變
假如我們想關(guān)閉 第 5 盞燈 (其他燈保持原狀態(tài)) x &= ~(1<<27)
--> 把第5個(gè)bit位置位 0,其他bit位不變
假如,我們想修改第5盞燈狀態(tài) (其他燈保存原狀態(tài)) x ^= (1<<27)
--> 把第5個(gè)bit位取反
假如我們想 獲取第 5 盞燈的狀態(tài)? --> x & (1<<27)
--> 結(jié)果為 0 表示關(guān)閉,非0表示打開(kāi)
--> (這個(gè)非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 個(gè)燈狀態(tài) --》 led_stat & LED_N
總結(jié)
- 上一篇: 安防监控 —— 软硬件环境分析与通信协议
- 下一篇: 华为S5700交换机初始化和配置SSH和