位段的深度剖析和存储方法,位段理解方法

简介: 位段的深度剖析和存储方法,位段理解方法
//位段----结构体实现位段的能力:
//位段和结构体类似,但是两个不同:
//1.位段的成员必须是int,unsigned int或signed int
//2.位段的成员后面有一个冒号和一个数字
//struct A      结构体                   struct A        位段
//{                                     {
//    int_a;                                 int _a:2;
//    int_b;                                 int _b:5;
//    int_c;                                 int _c:10;
//    int_d:                                 int _d:30;
//};                                    };
//上面的位段    -----一定程度上节省空间     ----4字节最大32bit,不能放置32以上的
//struct A
//{  //int型开辟4个字节---32bit
//    int _a : 2;//32-2=30
//    int _b : 5;//30-5=25
//    int _c : 10;//25-10=15
//    int _d : 30;//15不够,重新开辟4个字节,放置30bit,但是这30不要求掌握是15的还是32的
//};
//int main()
//{
//    printf("%d\n", sizeof(struct A));//8----8字节
//    return 0;
//}
//在vs里怎么存储的呢
//struct S
//{
//    char a : 3;
//    char b : 4;//a占3bit,b占4bit,放在1个字节中
//    char c : 5;//c占5bit,d占4bit,不能放一个字节中,分开放
//    char d : 4;//所以类似为3个字节,分别为00000000  00000000  00000000
//};
//struct S
//{
//    struct S s = { 0 };
//     s.a = 10;//把a的3个bit放10->1010(二进制),但是只能放3个010
//    s.b = 12;//把b的4个bit放12->1100(二进制),放1100
//    s.c =3;//把c的5个bit放3->00011(二进制),放00011
//    s.d =4;//把d的4个bit放4->0100(二进制),放0100
//    return 0;
//};//在vs编译器内,内存先使用低比特的数据,在使用高比特位,ab按顺序从右向左使用,(先放右在放左)

使用后变为0(空置放0)1100(b) 010(a)         000 00011(c)     0000 0100(d)

即内存中为01100010  00000011  00000100(16进制)

即         6     2   0    3     0   4

//int main()
//{
//    
//    return 0;
//}
相关文章
|
6月前
|
编译器 C语言 C++
C语言学习记录——位段(内存分配、位段的跨平台、位段的应用)
C语言学习记录——位段(内存分配、位段的跨平台、位段的应用)
60 0
|
6月前
|
存储 C语言
C语言学习记录——7000+字长文-复习&学习指针(指针、地址、指针变量、指针与数组、指针与函数、指针数组、多级指针)一
C语言学习记录——7000+字长文-复习&学习指针(指针、地址、指针变量、指针与数组、指针与函数、指针数组、多级指针)一
53 1
|
6月前
|
存储 C语言
C语言学习记录——7000+字长文-复习&学习指针(指针、地址、指针变量、指针与数组、指针与函数、指针数组、多级指针)二
C语言学习记录——7000+字长文-复习&学习指针(指针、地址、指针变量、指针与数组、指针与函数、指针数组、多级指针)二
42 1
|
存储 编译器 C语言
初识C语言指针:内存,字节划分,地址存储,简单使用,指针大小
初识C语言指针:内存,字节划分,地址存储,简单使用,指针大小
|
存储 编译器 C语言
【C语言航路】第十站:指针(三)深刻理解指针运算
【C语言航路】第十站:指针(三)深刻理解指针运算
50 0
|
人工智能 编译器 测试技术
一次性搞清数组指针、指针数组---从多维数组的本质上刨析(让你顿悟版)
一次性搞清数组指针、指针数组---从多维数组的本质上刨析(让你顿悟版)
43 0
|
存储 编译器 C语言
【多级指针】带你从反汇编角度认识指针,C语言指针,多级指针【滴水逆向三期(36)笔记】(下)
【多级指针】带你从反汇编角度认识指针,C语言指针,多级指针【滴水逆向三期(36)笔记】(下)
|
存储 编译器 C语言
【多级指针】带你从反汇编角度认识指针,C语言指针,多级指针【滴水逆向三期(36)笔记】(上)
【多级指针】带你从反汇编角度认识指针,C语言指针,多级指针【滴水逆向三期(36)笔记】
|
存储 小程序 编译器
【C语言】探究整型数据在内存中的存储
【C语言】探究整型数据在内存中的存储
129 0
|
存储 算法 编译器
【C语言进阶】结构体、位段、枚举、以及联合(共用体)的相关原理与使用(下)
【C语言进阶】结构体、位段、枚举、以及联合(共用体)的相关原理与使用(下)