欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

位域 大小端

程序员文章站 2022-04-22 12:11:50
...
#include <iostream>

using namespace std;

struct Test
{
    unsigned short int a:5;
    unsigned short int b:5;
    unsigned short int c:6;
};
int main()
{
Test test;
test.a=7;//00111
test.b=20;//10100
test.c=3;//000011
int i=*(short*)&test;
cout<<i;//3719
return 0;
}

a:5        a=7,转化为二进制为00111

b:5        b=20,转化为二进制为10100(b的低三位为100,高两位10)

c:6         c=3,转化为二进制为000011

位域 大小端


看例题是这样存的。。。。

可是本人在想,为啥字节内部bit不倒着存呢???也就是:

内存中存储方式为001 11100 110000 01,即0011 1100 1100 0001(位域在内存中的存储)

即0xC13C=12*(16^3)+1*(16^2)+3*16+12=49632

相关标签: 位域 大小端