首页 > 代码库 > 大端小端影响位域的存放
大端小端影响位域的存放
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。
大端小端影响位域的存放
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。