汉扬编程 C语言入门 C程序里的位域与位运算,哪个更好?

C程序里的位域与位运算,哪个更好?

嵌入式系统中,经常需要定义一些bool型标识。当这类数据量比较大的时候,为了节省内存,可以定义位域,如下

typedef struct

{

u8 bit0 :1;

u8 bit1 :1;

u8 bit2 :1;

u8 bit3 :1;

u8 bit4 :1;

u8 bit5 :1;

u8 bit6 :1;

u8 bit7 :1;

}u8bit_t;

u8bit_t u8bits;

u8bits.bit7 = 1;

u8bits.bit5 = 1;

另一种方法是定义一些宏使用位运算。如

#define BIT0 0x1

#define BIT1 0x2

#define BIT2 0x4

#define BIT8 0x80

u8 flag;

//位运算

flag |= BIT2;

flag &= ~BIT2;

很明显,第一种方法程序简单,可读性强,易维护,但是编译后代码多,会有大量的移位运算,执行成本高,适合位运算量不太大的小项目;第二种方法要根据实际应用定义很多不同含义的宏,但是运算效率很高,适合含有大量位运算的项目。

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/cjia/6517.html

国产工作站“王炸”来了!曙光桌面工作站评测

零基础自学C语言的十一大步骤

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部