Bit field Access
#include < stdio.h >
int main()
{
struct Bits
{
unsigned int a0:1;
unsigned int a1:1;
unsigned int a2:1;
unsigned int a3:1;
unsigned int a4:1;
unsigned int a5:1;
unsigned int a6:1;
unsigned int a7:1;
unsigned int a8:1;
unsigned int a9:1;
unsigned int a10:1;
unsigned int a11:1;
unsigned int a12:1;
unsigned int a13:1;
unsigned int a14:1;
unsigned int a15:1;
};
union ShortBianry{
unsigned short value;
struct Bits binaryMode;
}test;
scanf("%d",&test.value);
printf("%d%d%d%d_%d%d%d%d_%d%d%d%d_%d%d%d%d\n"
,test.binaryMode.a15
,test.binaryMode.a14
,test.binaryMode.a13
,test.binaryMode.a12
,test.binaryMode.a11
,test.binaryMode.a10
,test.binaryMode.a9
,test.binaryMode.a8
,test.binaryMode.a7
,test.binaryMode.a6
,test.binaryMode.a5
,test.binaryMode.a4
,test.binaryMode.a3
,test.binaryMode.a2
,test.binaryMode.a1
,test.binaryMode.a0);
printf("%d",test.value);
return 0 ;
}
NOTE :
1. short 為16 bits其實是 depend on machine
2 .unsigned int : 0 ; 可以用來作 alignment boundary 調整後面的起始位置至少是1 byte, 由pack定義與compiler決定, vc++內定是4 byte).
3. 需要注意Big-Endian和Little-Endian
This entry was posted on 2010/3/7 at 下午3:02. You can follow any responses to this entry through the RSS 2.0. You can leave a response.
- No comments yet.