問題:開發有時會用到多個標誌位,那麼通常如何實現呢?
方式1:普通方式,即使用bool陣列
實現方式:
#define my_flag (1<<0) //二進位制--00000001,16進製制--0x00000001
#define my_flag2 (1<<1) //二進位制--00000010,16進製制--0x00000002
#define my_flag3 (1<<2) //二進位制--00000100,16進製制--0x00000004
#define my_flag4 (1<<3) //二進位制--00001000,16進製制--0x00000008
#define my_flag5 (1<<4) //二進位制--00010000,16進製制--0x00000010
(使用計算器輸入二進位制可方便看到16進製制)
(1)判斷標誌位是否為true
方法:使用"&"操作符
//判斷my_flag是否為真
int nflag = 0x43;
if(nflag & my_flag )
else
原理:1與任何數相與是它本身,0與任何數相與都為0
(2)將對應的標誌位設定為true
方法:使用「|」操作符
//將my_flag標誌設定為真
int nflag = 0x000000;
nflag = nflag | my_flag;
原理:0與任何數相或是它本身,1與任何數相或都為真
(3)將對應的標誌位設定為false
方法:使用"&"和"~"操作符
//將my_flag標誌設定為假
int nflag = 0x000001;
nflag = nflag & (~my_flag);
原理:取反後其他位都是1,自己位是0,1與任何數相與是它本身,0與任何數相與都為0 C 位運算總結
位運算應用口訣 清零取反要用與,某位置一可用或 若要取反和交換,輕輕鬆鬆用異或 移位運算 要點 1 它們都是雙目運算子,兩個運算分量都是整形,結果也是整形。2 左移 右邊空出的位上補0,左邊的位將從字頭擠掉,其值相當於乘2。3 右移 右邊的位被擠掉。對於左邊移出的空位,如果是正數則空位補0,若為負數...
C 位運算總結
位運算的運算物件只能是整型或者字元型資料。c 的位運算子 c 中的移位運算 移位運算是指將二進位制資訊串作為整體移動。leetcode上位運算的幾道例題 1 位異或運算 異或運算 相同為0,不同為1。將陣列中的所有元素求異或和,對於相同的元素,異或的結果為0。因此,陣列中成對出現的元素異或和為0,所...
C 位運算及例項計算
前言 平時在實際工作中很少用到這個,雖然都是一些比較基礎的東西,但一旦遇到了,又不知所云。剛好最近接觸了一些相關這方面的專案,所以也算是對 這些內容重新溫習實踐了一遍。所以這篇不僅作為個人備忘,也分享給各位重溫一遍。要學會位運算,首先要清楚什麼是位運算?程式中的所有內容在計算機記憶體中都是以二進位制...