c语言中的位和位域以及如何访问它们

5.2 用位运算符访问位

首先定义一个变量,以下均以设置此变量的第二位为例.

unsigned char ch;

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位为例
一般用法:

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

你可能感兴趣的:(杂记,编程语言,java,c++,c语言,安全)