1、按位运算就是对字节或字中的实际位进行检测、设置或移位。
位运算符
2、位段的概念与定义
位段类型是一种特殊的结构类型,其所有成员的长度均是以二进制位为单位定义的,结构中的成员被称为位段。位段定义的一般形式为:
结构 结构名
{
类型 变量名 1:长度;
类型 变量名 2:长度;
。。。
类型 变量名 n:长度;
}
一个位段必须被说明是int、unsigned或signed中一种。
如:
struct packed_data
{
unsigned a:2;
unsigned b:1;
unsigned c:1;
unsigned d:2;
}data;
这里的a.b.c.d分别占2位,1位,1位,2位。
3、位段的相关说明
(1)因为位段类型是一种结构类型,所以位段类型和位段变量的定义,以及对位段(即位段类型中的成员)的引用均与结构体变量相同。
(2)某一位段要从另一个字节开始存放,则在中间加一句“
unsigned :0;”
(3)可以使各个位段占满一个字节也可以不占满一个字节。若不占满一个字节在末尾加上“int i;”即可。
(4)一个位段必须存储在一个存储单元(通常为一个字节)中,不能跨两个存储单元。如果本单元不够容纳某个位段,则从下一单元开始存储该位段。
(5)可以用“%d”、“%x”、“%u”、“%o”等格式字符,以整数形式输出位段。
(6)在数值表达式中引用位段时,系统自动将位段转换为整形数。