參考how do you set, clear and toggle a single bit in c?
c/c++中對二進位制位的操作包括設定某位為1、清除某位(置為0)、開關某位(toggling a bit)、檢查某位是否為1等。這些操作較為常見並且可以作為其他位運算的基礎介面,以下羅列幾種方法:
number|=1
/ 設定第x位為1
number&=~
(1/ 置第x位為0
number^=1
<<
x;
if
(number&(
1<<
x))
相應地我們可以將其封裝起來,簡便的方法是使用巨集來封裝:
#define bit_set(a,b) ((a) |= (1<<(b)))
#define bit_clear(a,b) ((a) &= ~(1<<(b)))
#define bit_flip(a,b) ((a) ^= (1<<(b)))
#define bit_check(a,b) ((a) & (1<<(b)))
這個使用起來簡單很多:
struct
bits
;struct
bits
mybits
;// set/clear a bit
mybits.b
=1;mybits.c
=0;// toggle a bit
mybits.a
=!mybits.a
;mybits.b
=~mybits.b
;mybits.c
^=1;// check a bitif(
mybits.c
)
這個方法其實類似於使用位結構,只不過stl包裝了這個結構定義,當然還提供了很多便捷的介面:
std
::bitset
<
5>
bits
;bits[0
]=true
;bits[1
]=false
;bits
.set(2
);bits
.flip(3
);bits
.reset(2
);
written by kevin lynx posted at
c c 中的位操作
c c 支援比較低階的位運算,在是眾人皆知的了。每本c c 的教科書都會說到這部分的內容,不過都很簡略,我想會有很多人不知道位運算用在什麼地方。這個帖子就簡略說說位運算的用處,更進一步的用法要大家自己去體會。而主要說的是操作標誌值方面。define bti msk bit 1 bit define ...
C C 中的位操作
1 位邏輯非運算 位邏輯非運算是單目的,只有乙個運算物件。位邏輯非運算按位對運算物件的值進行非運算,即 如果某一位等於0,就將其轉變為1 如果某一位等於1,就將其轉變為0。比如,對二進位制的10010001進行位邏輯非運算,結果等於01101110,用十進位制表示就是 145等於110 對二進位制的...
c c 的位操作
c c 的位操作 說明,本文章面向初學者,高手勿看,如有問題需要 請發郵件 xjtufjj stu.xjtu.edu.cn c c 是一種系統程式語言,之所以這樣說其中乙個原因是是因為其提供的位操作的能力。其提供的位操作符直接對應於相關的彙編指令。在現實的程式設計實踐中,合理的使用位操作會大大提高效...