声明和使用
struct FileAttributes
{
unsigned int ReadOnly: 1;
unsigned int Hidden: 1;
};
这里,这两个字段中的每一个将占用内存中的 1 位。它由变量名后面的 : 1
表达式指定。位字段的基本类型可以是任何整数类型(8 位 int 到 64 位 int)。建议使用 unsigned
类型,否则可能会出现意外情况。
如果需要更多位,则将 1
替换为所需的位数。例如:
struct Date
{
unsigned int Year : 13; // 2^13 = 8192, enough for "year" representation for long time
unsigned int Month: 4; // 2^4 = 16, enough to represent 1-12 month values.
unsigned int Day: 5; // 32
};
整个结构只使用 22 位,并且通过正常的编译器设置,sizeof
这个结构将是 4 个字节。
用法非常简单。只需声明变量,并像普通结构一样使用它。
Date d;
d.Year = 2016;
d.Month = 7;
d.Day = 22;
std::cout << "Year:" << d.Year << std::endl <<
"Month:" << d.Month << std::endl <<
"Day:" << d.Day << std::endl;