| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 750 人关注过本帖
标题:位域结构体的问题
只看楼主 加入收藏
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
位域结构体的问题
#include<stdio.h>
#include<stdlib.h>
struct bitf
{
    unsigned bit_0:1;
    unsigned dummy:14;
    unsigned bit_15:1;
}*bit_buff;
void main()
{
unsigned short x;char buf[20];
for(;;)
{
      printf("请输入一个整型数字(若想退出请输入0)");
      gets(buf);
      if(buf[0]=='0') break;
      x=(unsigned short)atoi(buf);
      bit_buff=(struct bitf*)&x;
      printf("该数的十六进制是:%0x\n",x);
      printf("该数在本机内表示的最高位是MBS:%d\n",bit_buff->bit_15);
      
      printf("\n");
}

}
图片附件: 游客没有浏览图片的权限,请 登录注册
输入888  为什么最高位0最低位0
bit_buff=(struct bitf*)&x;
printf("该数在本机内表示的最高位是MBS:%d\n",bit_buff->bit_15);
printf("该数在本机内表示的最低位是LBS:%d",bit_buff->bit_0);
这三步搞不懂    请大家帮忙解释下  
搜索更多相关主题的帖子: 位域 结构体 
2010-01-26 20:58
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:20 

1.bitf的定义是16位(即二进制位)的位域(1位+14位+1位)
2.x是输入的数字串转换过来的,它是一个无符号数(一般它占用2个字节,即16位)
3.bit_buff=(struct bitf*)&x;是将x地址给了指针bit_buff,即转换成了位域(即将16位分成1位+14位+1位).
4.你将数888化为16位二进制看看,从左往右,就是高位到低位.(0000001111111000)

[ 本帖最后由 cnfarer 于 2010-1-26 21:31 编辑 ]

★★★★★为人民服务★★★★★
2010-01-26 21:25
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
  这样啊                谢谢
2010-01-26 21:45
快速回复:位域结构体的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051215 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved