|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
struct mybitfields
{
unsigned short a : 4;
unsigned short b : 5;
unsigned short c : 7;
} test
void main(void)
{
int i;
test.a = 2;
test.b = 3;
test.c = 0;
i = *((short *)&test);
printf("%d\n", i);
}
x86上的运行结果
这个 a 占4个bit 是0010
b 占 5个bit 00011
c 占7个bit 0000000
short 占2个字节 取8个bit
低地址放低地址处,高地址放高地址处
小端存储 为什么不是 0010 00011 0000000
求大神指点 谢谢谢谢
你要算啥,我看你的意思是把test强转成short 然后打印出来?
我电脑是大端, 你看完大端 小端应该差不多
我vs2019的运行结果
运行结果
第一次赋值,可以看见上面内存中 test所占的2个字节
数据变为 02 00
第一次赋值
第二次赋值, 数据变为 32 00
第二次赋值
第三次赋值, 数据没有变化
第三次赋值
你赋值的数过小,看不出细节
这里对每个变量赋值最大的数
第一次赋值 数据变为 0f 00
第一次赋值
第二次赋值 注意!!
数据变为 ff 01
第二次赋值
第三次赋值 ff ff
第三次赋值
|
|