免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2229 | 回复: 1
打印 上一主题 下一主题

struct bit field 问题 [复制链接]

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:03
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-29 22:27 |只看该作者 |倒序浏览
假设值为 0xFF80 =  ( 1111 1111 1000 0000 )  B15 ~ B0



  1. struct { unsigned char
  2.         B8:1,
  3.         B9:1,
  4.         B10:1,
  5.         B11:1,
  6.         B12:1,
  7.         B13:1,
  8.         B14:1,
  9.         B15:1,  
  10.         B0:1,
  11.         B1:1,
  12.         B2:1,
  13.         B3:1,
  14.         B4:1,
  15.         B5:1,
  16.         B6:1,
  17.         B7:1;
  18. } BIT;

  19. 上面是正确的写法  

  20. 我搞不懂为什么不是

  21. struct { unsigned char
  22.         B0:1,
  23.         B1:1,
  24.         B2:1,
  25.         B3:1,
  26.         B4:1,
  27.         B5:1,
  28.         B6:1,
  29.         B7:1,  
  30.         B8:1,
  31.         B9:1,
  32.         B10:1,
  33.         B11:1,
  34.         B12:1,
  35.         B13:1,
  36.         B14:1,
  37.         B15:1;
  38. } BIT;


  39. 或是

  40. struct { unsigned char
  41.         B15:1,
  42.         B14:1,
  43.         B13:1,
  44.         B12:1,
  45.         B11:1,
  46.         B10:1,
  47.         B9:1,
  48.         B8:1,  
  49.         B7:1,
  50.         B6:1,
  51.         B5:1,
  52.         B4:1,
  53.         B3:1,
  54.         B2:1,
  55.         B1:1,
  56.         B0:1;
  57. } BIT;


复制代码




1. 为什么是从bit field 是  B8 ~ B15 再从 B0 ~ B7?  ,请问 0xFF80 值是怎么配置到 bit field  内存
2. 这跟 Big-Endian  & Little-Endian 有关系吗?
3. 为什么0xFF80 是分成FF 跟 80 摆放到内存?这跟CPU有关系吗? 

谢谢

[ 本帖最后由 shihyu 于 2008-1-29 23:16 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-01-30 09:00 |只看该作者
你的处理器是大端字节序吧?
不然,中间的是正确的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP