69,368
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#pragma pack(push,1)
union U {
unsigned char byte;
struct BF {
unsigned int b0:1;//a
unsigned int b1:1;//b
unsigned int b2:1;//c
} bf;
} u;
#pragma pack(pop)
unsigned char bt;
int a,b,c;
int main() {
for (bt=0;bt<8;bt++) {
u.byte=(unsigned char)bt;
a=u.bf.b0;
b=u.bf.b1;
c=u.bf.b2;
printf("byte 0x%02x -- c:%d b:%d a:%d\n",bt,c,b,a);
}
for (c=0;c<2;c++)
for (b=0;b<2;b++)
for (a=0;a<2;a++) {
u.bf.b0=a;
u.bf.b1=b;
u.bf.b2=c;
bt=u.byte;
printf("c:%d b:%d a:%d -- byte 0x%02x\n",c,b,a,bt);
}
return 0;
}
//byte 0x00 -- c:0 b:0 a:0
//byte 0x01 -- c:0 b:0 a:1
//byte 0x02 -- c:0 b:1 a:0
//byte 0x03 -- c:0 b:1 a:1
//byte 0x04 -- c:1 b:0 a:0
//byte 0x05 -- c:1 b:0 a:1
//byte 0x06 -- c:1 b:1 a:0
//byte 0x07 -- c:1 b:1 a:1
//c:0 b:0 a:0 -- byte 0x00
//c:0 b:0 a:1 -- byte 0x01
//c:0 b:1 a:0 -- byte 0x02
//c:0 b:1 a:1 -- byte 0x03
//c:1 b:0 a:0 -- byte 0x04
//c:1 b:0 a:1 -- byte 0x05
//c:1 b:1 a:0 -- byte 0x06
//c:1 b:1 a:1 -- byte 0x07
struct
{
unsigned Info:10;
unsigned Func:8;
unsigned SA:4;
unsigned DA:4;
unsigned RES:2;
unsigned p:1;
}ID;
29位也能编译通过吗?#include <stdio.h>
#include <stdlib.h>
char buf[17];
union U {
unsigned short int aa;
struct S {
unsigned int bb:7;//(bit 0-6)
unsigned int cc:6;//(bit 7-12)
unsigned int dd:3;//(bit 13-15)
} s;
} u;
void main() {
//bbbbbbbbbbbbbbbb
//iiiiiiiiiiiiiiii
//tttttttttttttttt
//111111
//5432109876543210
//::::::::::::::::
u.aa=0xE07F;//1110000001111111
printf("bb==%d,cc==%d,dd==%d\n",u.s.bb,u.s.cc,u.s.dd);
u.s.bb=0x41;
u.s.cc=0x21;//dddccccccbbbbbbb
u.s.dd=5; //1011000011000001
printf("aa==0x%04X==%016s(2)\n",u.aa,itoa(u.aa,buf,2));
}
//bb==127,cc==0,dd==7
//aa==0xB0C1==1011000011000001(2)