位域实例讲解
发表:2023-08-29 12:00:45 阅读:64

电子资讯位域实例讲解

位域定义与结构定义相仿,其形式为:

struct     位域结构名

{位域列表};

其中,位域列表的形式为:

类型说明符    位域名:位域长度

例如:

 

这里成员列表的位域的类型都是unsigned,则其成员列表的类型必须是unsigned或signed中之一。

x和y变量均为占用一个字节的存储空间。定义后可以直接使用其为变量,例如:

x.bit0=1;

y.bit2=1;

由于ICCAVR集成开打环境中,编译器没有充分利用AVR单片机对于寄存器所具有的位寻址功能,在使用位变量结构体时,编译器将位变量结构体定位于数据存储器而不是寄存器中。因此生成的代码量大,执行效率低,这也是ICCAVR目前的一个不足之处。

ICCAVR集成开发环境的头文件macros.h中,定义了一个“#define BIT(x)(1<<(x))”宏,用该宏来操作位变量,编译后生成的代码质量更高。在使用BIT(x)之前,应在源文件中加入“#include”编译预处理命令。

 

 

电子街推荐阅读

什么是位域

位运算符:右移运算(>>)

位运算符:左移运算(<<)

位运算符:“求反”运算(~)