C | 位域&联合体
位域和联合体搭配使用:
union u8 { unsigned char whole; struct { unsigned char bit0:1; unsigned char bit1:1; unsigned char bit2:1; unsigned char bit3:1; unsigned char bit4:1; unsigned char bit5:1; unsigned char :1; // 占位 unsigned char bit7:1; }bits; u8() { // C++ 才行,C 只能在使用时 whole = 0x00; } };
x86 小端模式(内存高地址存放数据高字节,寄存器大于一个字节时,大小端就有区别了):
1 u8 flag; 2 flag.bits.bit0 = 0x01; // 低地址数据置一 3 cout << (int)flag.whole << endl; // 输出 1,说明低地址存放的地位数据
对齐:
如上,bits 这个位域结构的对齐就该是 unsigned char 的整数辈
而对于 u8 联合体,对齐得看 bits 和 whole 最大的那个。
posted on 2015-09-26 02:03 Excavator 阅读(1097) 评论(0) 编辑 收藏 举报