5.2 用位運算符通路位
首先定義一個變量,以下均以設定此變量的第二位為例.
1、位的置1
使用按位或運算符
一般用法:
ch=0x00;
ch | =0x02;
通用用法:
int i;\\存放需要置1的位
ch |=1<<i;
2、位的置0
一般用法:
ch=0x02;
ch &=0xfc;
通用用法:
unsigned int i=2;\\存放需要置0的位
ch &=~(1<<i);
3、位的測試
unsigned int i;\\存放需要測試的位
if(ch & 1<<i)\\如果測試位為1,則結果為真,反之結果為假
5.3 用位運算符通路位域
位域即一片連續的位。
1、修改位域
修改位域先使用按位與清除位域,再使用按位或存入位域,下以将111存入變量 ch 2-4位為例
一般用法:
通用用法:
unsigned int i;\\存放需要存儲的值
ch=ch & 0xf1 | i<<(n-1)\\n
為修改位域的最低位
2、擷取位域
擷取位域分兩種情況
(1)擷取的位域在數的右端
i=ch & 0x07;\\擷取ch的第1-3位
(2)擷取的位域不在數的右端
先使用移位運算符将位域移到最右端,再使用上述方法。
3、異或加密
(1)加密
将資料與密匙進行疑惑運算
(2)解密
将加密後的資料再次加密