首先定義乙個變數,以下均以設定此變數的第二位為例.
unsigned
char ch;
1、位的置1
使用按位或運算子
一般用法:
ch=
0x00
;ch |
=0x02
;
通用用法:
int i;\\存放需要置1的位
ch |=1
<一般用法:
ch=
0x02
;ch &
=0xfc
;
通用用法:
unsigned
int i=
2;\\存放需要置0的位
ch &=~
(1<;
3、位的測試
unsigned
int i;\\存放需要測試的位
if(ch &
1<1、修改位域
修改位域先使用按位與清除位域,再使用按位或存入位域,下以將111存入變數 ch 2-4位為例
一般用法:
ch=ch &
0xf1
|0x0e
通用用法:
unsigned
int i;\\存放需要儲存的值
ch=ch &
0xf1
| i<<
(n-1
)\\n
為修改位域的最低位
2、獲取位域
獲取位域分兩種情況
(1)獲取的位域在數的右端
i=ch &
0x07
;\\獲取ch的第1
-3位
(2)獲取的位域不在數的右端
先使用移位運算子將位域移到最右端,再使用上述方法。
3、異或加密
(1)加密
將資料與密匙進行疑惑運算
(2)解密
將加密後的資料再次加密
C語言中位域
引自 這是c語言位域 冒號 問題 有些資訊在儲存時,並不需要占用乙個完整的位元組,而只需佔幾個或乙個二進位制位。例如在存放乙個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省儲存空間,並使處理簡便,c語言又提供了一種資料結構,稱為 位域 或 位段 所謂 位域 是把乙個位元組中的二進位劃分為...
C語言中的位域
struct 位域結構名 1 使用位域可能不如使用位運算子的執行速度快,但是位域使程式更容易閱讀。2 如果某個作用域中定義了位域結構,則在該作用域中就不能使用typedef或 define來定義與位域結構名相同的型別名。3 在之前的標準中,位域型別必須是int unsigned int或signed...
C語言中的位域
2 當相鄰成員的型別不同時,不同的編譯器有不同的實現方案,gcc會壓縮儲存,而vc vs不會 請看下面的位域 bs include int main printf d n sizeof struct bs return 0 3 如果成員之間穿插著非位域成員,那麼不會進行壓縮。例如對於下面的 bs i...