以前对union理解不深,只知道,里面的元素共享同一个存储单元,没想可以这样用:
struct tagBYTEBIT
{
BYTE bit0_5: 6; //占6位 低六位
BYTE bit6_7: 2; //占2位 高二位
}ByteBit;
typedef union
{
tagBYTEBIT bt;
BYTE byte;
}unBTBT;
void main()
{
unBTBT mybtbt;
mybtbt.byte= 0xA7; //这里要赋给BYTE类型的,因为结构体没有重载=运算符。
cout << "低六位:" <<(int)mybtbt.bt.bit0_5 << endl; //这里最好强制转换成int,因为BYTE输出是按字符输出,而不是输出整型值。
cout << "高二位:" <<(int)mybtbt.bt.bit6_7 << endl;
}
这样就可以自由定义一字节或其它类型的每一位做什么,而且容易看懂。惭愧,知其一不知其二。