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)解密
将加密后的数据再次加密