C语言结构体和共用体操作-零存整取

文章讲述了如何使用C语言中的结构体和共用体(联合体)对寄存器进行位操作,演示了如何通过这两种方式访问和赋值寄存器的低4位和高4位,以及实现零存整取的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构体和共用体操作(零存整取)

通过结构体和共用体(联合体)对寄存器进行位操作和整体操作实现零存整取。

//定义一个8位寄存器 M0
typedef struct
{
    unsigned char M0_L : 4;//寄存器低4位
    unsigned char M0_H : 4;//寄存器高4位
} Reg_t;

typedef union
{
  Reg_t RegM0;
  unsigned char ReadRegM0;
} RegMod_t;

int main(void)
{
    RegMod_t MyReg;//定义联合体

    MyReg.RegM0.M0_H = 0b1011;//赋值操作
    MyReg.RegM0.M0_L = 0b0101;//赋值操作

    /*访问结构体的方式*/
    unsigned char*pt;
    pt = (unsigned char*)&MyReg.RegM0;
    printf("结构体的方式访问:The value of M0 is %#x\n",*pt);
    //或者
    Reg_t *pt2;
    pt2 = &MyReg.RegM0;
    printf("结构体的方式访问:The value of M0 is %#x\n",*pt2);
    
    /*访问共用体的方式*/
    printf("共用体的方式访问:The value of M0 is %#x\n",MyReg.ReadRegM0);

    return 0;
}

运行结果如图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值