比特序问题

weichen2005 2009-02-27 02:34:21
typedef struct bitstruct
{
int b1:5;
int :2;
int b2:2;
} bitstruct;

bitstruct结构中的字段,总共占用了9个位的空间

假设内存低地址到高地址的字节分别是: B0, B1, B2, B3

那么如果定义一个bitstruct结构,其占用的是前两个字节的空间(B1,B2),这一点应该没什么问题吧


假设内存低地址到高地址的位分别是: b0, b1, b2, b3 ...

那么这个结构中的第一个字段b1占用的是第一个字节的哪几个位呢???


如果用memcpy向B0地址处用拷贝入一个ASCII字符 'E'(0x45), 那么这个 'E'在位序上是怎么分布的呢???
...全文
203 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
waizqfor 2009-02-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ltc_mouse 的回复:]
lz应该自己动手测试

C/C++ code
int main()
{
typedef struct bitstruct
{
unsigned int b1:5; /* 用unsigned测试,容易理解一点 */
unsigned int :2;
unsigned int b2:2;
} bitstruct;
typedef union {
unsigned char c[4];
bitstruct bs;
} unionbits;
unionbits bits={0};
bits.c[0]=0x15; /* 修改c[0]即修改前8个bit,看b1,b2的值,就知道分…
[/Quote]
UP
  • 打赏
  • 举报
回复
b0的数据就是二进制:01000101啊,这里又没有位序的改变。
ltc_mouse 2009-02-27
  • 打赏
  • 举报
回复
lz应该自己动手测试

int main()
{
typedef struct bitstruct
{
unsigned int b1:5; /* 用unsigned测试,容易理解一点 */
unsigned int :2;
unsigned int b2:2;
} bitstruct;
typedef union {
unsigned char c[4];
bitstruct bs;
} unionbits;
unionbits bits={0};
bits.c[0]=0x15; /* 修改c[0]即修改前8个bit,看b1,b2的值,就知道分布了 */
cout<<hex<<"b1="<<bits.bs.b1<<endl<<"b2="<<bits.bs.b2<<endl;
return 0;
}
tangshuiling 2009-02-27
  • 打赏
  • 举报
回复

写成代码楼主自己看
#include <iostream>
#include <string>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
typedef struct bitstruct
{
int b1:5;
int :2;
int b2:2;
} bitstruct;
unsigned char buf[]={0xB0, 0xB1, 0xB2, 0xB3};
bitstruct test;
memcpy(&test,buf,4);
cout<<test.b1<<endl;
cout<<test.b2<<endl;
unsigned char ch='e';
memcpy(&test,&ch,1);
cout<<test.b1<<endl;
cout<<test.b2<<endl;
return 0;
}


weichen2005 2009-02-27
  • 打赏
  • 举报
回复
最后一句写错了,应该是:

如果用memcpy向B0地址处拷贝入一个ASCII字符 'E'(0x45), 那么这个 'E'在位序上是怎么分布的呢???

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧