文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>位域和字节序的关系

位域和字节序的关系

时间:2007-03-27  来源:kuaizaifeng

#include <stdio.h>
int main()
{
char* c;
struct bitfield {
int ia:3;
int ib:2;
int ic:3;
} field;
field.ia=4;
field.ib=2;
field.ic=2;

c=(char *) &field;
printf("%0x\n",*c);
printf("%d\n",*c);
struct st {
        char c1;
        char c2;
        short c3;
        int c4;
} srt;
srt.c1 = 1;
srt.c2 = 2;
srt.c3 = 255;
srt.c4 = 0xddccbbaa;
unsigned char *tmp = &srt;
int i = 0;
for (i = 0; i < 8; i++)
printf("%0x\t", *(tmp+i));
printf("\n");
return 0;
}

在struct bitfield{
    int a1:3;
    int a2:2;
    int a3:3;
}bitfield;
这样的位域定义中,不管机器的字节序,总是先定义的域占据MSB,而后定义的域占据LSB.
所以这里从MSB到LSB分别是:
MSB   a1: 100
      a2: 10
LSB   a3: 010
这样,在小端系统里,低地址存放LSB,高地址存放MSB。
于是内存里是   0101 0100,以十六进制打印出来是0x54
在大端系统里,低地址存放MSB,高地址存放LSB。
于是内存里是   1001 0010,以十六进制打印出来是0x92
相关阅读 更多 +
排行榜 更多 +
舔狗之路

舔狗之路

休闲益智 下载
自动钞票机

自动钞票机

休闲益智 下载
实景全景地图

实景全景地图

交通出行 下载