C c 中幾種操作位的方法

2021-06-19 05:40:27 字數 1338 閱讀 3662

參考how do you set, clear and toggle a single bit in c?

c/c++中對二進位制位的操作包括設定某位為1、清除某位(置為0)、開關某位(toggling a bit)、檢查某位是否為1等。這些操作較為常見並且可以作為其他位運算的基礎介面,以下羅列幾種方法:

number|=1

number&=~

(1

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 是一種系統程式語言,之所以這樣說其中乙個原因是是因為其提供的位操作的能力。其提供的位操作符直接對應於相關的彙編指令。在現實的程式設計實踐中,合理的使用位操作會大大提高效...