写出下列程序在X86 上的运行结果。

本文介绍了一个X86平台下使用复合类型位域的具体案例,通过定义包含不同位数的无符号短整型成员变量,并设置特定值后,演示了如何将这些成员合并成一个16位的短整型数值并输出。

写出下列程序在X86 上的运行结果:

struct mybitfields {
	unsigned short a:4;
	unsigned short b:5;
	unsigned short c:7;
}test;
void main(){
	int i;
	test.a=2;
	test.b=3;
	test.c=0;
	i=*((short*)&test);
	printf("%d\n",i);
	system("pause");
}


输出结果:50

分析:

a:4表示a占4位

b:5表示b占5位

c:7表示c占7位

内存分配方式是从低位到高位(a在低位,c在高位)

当有赋值:test.a=2(0010)  test.b=3(00011)  test.c=0(0000000)

高   ----------   32   位-------->   低 
00000000   00000000   00000000   00110010 
00000000   00000000   |+++++++|====--|-- 
--------------------—|c------|b------|a- 
---------------------|0------|3------|-2--

X86 上市16位CPU,对应的short占两个字节。

拼成00000000  00110010  这个二进制值(short)为十进制50

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值