天天看点

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

将加密后的数据再次加密