C语言位域(位段)

一、位域是什么?

位域是一种比字节还小的比特位数据,它可以是一个比特位,也可以是多个比特位一起组成。高级语言或许很少接触位域的使用,但是从事嵌入式开发的工程师一定不会陌生,它简洁明了,但是使用起来却需要知道当前IDE存储的数据是大端还是小端。

二、怎么定义位域?

位域数据的定义需要用到C语言关键字struct,它也是一种数据结构,可以对某些比特位进行特殊的声明。比如某字节的含义如下图:

位域

那么它的声明如下;

typedef struct w5500_control_phase
{
#ifdef LITTLE_ENDIAN
uint8_t operation_mode:2;
uint8_t access_mode_bit:1;
uint8_t block_select_bits:5;
#elif defined(BIG_ENDIAN)
uint8_t block_select_bits:5;
uint8_t access_mode_bit:1;
uint8_t operation_mode:2;
#endif
}w5500_control_phase_t;

三、示例代码。

位域示例源码

由于我使用的是Windows PC,数据默认是小端模式,从上图可以看到位域的使用方法与便捷。(BTW:其实上图举例的是W5500网卡驱动的某些数据的定义)。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();