码迷,mamicode.com
首页 > 其他好文 > 详细

大端小端影响位域的存放

时间:2014-09-03 11:12:57      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   ar   2014   div   sp   log   

struct Test{
    unsigned short int a:5;//a1a2a3a4a5
    unsigned short int b:5;//b1b2b3b4b5
    unsigned short int c:6;//c1c2c3c4c5c6
};

首先排排好

低地址----高地址

a1a2a3a4a5b1b2b3b4b5c1c2c3c4c5c6

对于大端

低地址存放高位,所以内存的分布是这个样:

|a1a2a3a4a5b1b2b3 | b4b5c1c2c3c4c5c6|

对于小端

在一个字节中低地址存放低位(比如对于b来说,低位b3b4b5就会存放在低地址)

|b3b4b5a1a2a3a4a5 |c1c2c3c4c5c6 b1b2|

首先前一个字节中,放的是b低位的bit

其次是,在一个字节中,排列在后面的b,排在a前边,排列在b后面的c,排在b前面

我在我本机上做了一个实验来验证正确性:

int main()
{
    Test test;
    test.a = 16;
    test.b = 11;
    test.c = 16;
    int i = *(short*)&test;
    cout<<i<<endl;
    return 0;
}

我们可以看一下内存布局

10000 01011 010000

01110000 | 01000001

由于是小端,所以低地址存放的是高字节,因此此值为0x4170,转换成十进制为16752。

bubuko.com,布布扣

大端小端影响位域的存放

标签:style   blog   http   color   ar   2014   div   sp   log   

原文地址:http://www.cnblogs.com/dy-techblog/p/3953042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!