當我們需要節省內存,比如某個變量值只有0和1兩種狀態,或者兩個值都只是不超過127的數,如何節省內存呢?當然可以直接定義變量進行位操作,但是位操作往往會涉及到較多的& |之類的操作,往往不能讓人一眼就明白要表達的意思。實際上,使用“位域”可以輕松實現上述需求,并且可讀性較強。 - 使用位操作: 代碼:
int main(){ unsigned char a=0; a=a&0x0f|0xB0; a=a&0xf0|0x05; cout<<(int)a<<endl; cout<<hex<<(int)a<<endl; return 0;}效果: 
這樣能得到預期的結果,但是實際上比較繁瑣,別人看你的代碼的時候需要仔細看你的位操作才能明白是干嘛的。
使用位域 位域其實就是將一個變量看做一個結構,而每一個域對應操作某一些位,在使用的時候需要保證不溢出,不然就出問題了 代碼:
struct a{unsigned char b : 4;unsigned char c : 4;}a;int main(){struct a a;cout <<"size:" <<sizeof a << endl<<endl;for (a.b = 1; a.b<10; ++a.b){ for (a.c = 1; a.c<10; ++a.c) { if (a.b % 3 != a.c % 3) cout << (int)(a.b) << " " << (int )(a.c) << " "; else cout<<" "; } cout << endl;}return 0;}這個題目據說是微軟的一個面試題,具體題目記不清了,大概是只允許使用一字節變量遍歷一個9*9的棋盤,然后干啥、、、 效果 
位域操作相對位操作來說直接明了得多,容易閱讀,實際上c++的bitset類也可以很容易的用于空間要求高的場合。
新聞熱點
疑難解答