C语言位域(位段)
报价宝综合消息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网络卡驱动的某些资料的定义)。