天天看點

c語言中的位和位域以及如何通路它們5.2 用位運算符通路位5.3 用位運算符通路位域

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)解密

将加密後的資料再次加密