c语言中位字段与结构联合的组合使用详解
举例:
===================================================
/** INITRM - Initialization of internal ram position register; 0x0000 0010 **/
typedef union {
byte Byte;
struct {
byte RAMHAL :1;
byte :1;
byte :1;
byte RAM11 :1;
byte RAM12 :1;
byte RAM13 :1;
byte RAM14 :1;
byte RAM15 :1;
} Bits;
struct {
byte :1;
byte :1;
byte :1;
byte grpRAM_11 :5;
}MergedBits;
} INITRMSTR;
那么赋值方式就有三种,比如直接给INITRMSTR赋值
INITRMSTR = 0xEF;
也可以位字段赋值
INITRMSTR.Bits.RAM15 = 1;
也可以多位的位字段赋值
INITRMSTR.MergedBits.grpRAM_11 = 26
(26是十进制,转换成二进制是11010, 直接表示 RAM_11 = 0, RAM_12 = 1, RAM_13 = 0, RAM_14 = 1, RAM_15 = 1)
需要注意的是,在二进制中顺序是从右向左,在这个结构体中是从上向下.
相关文章
Visual Studio 2019 Professional 激活方法详解
这篇文章主要介绍了Visual Studio 2019 Professional 激活方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-05-05Win11+ VS2022编译 FFmpeg6.0 静态库的详细过程
这篇文章主要介绍了Win11+VS2022编译FFmpeg6.0静态库的方法,本文通过图文实例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-08-08
最新评论