位段
字节的问题:假如你迷惑于字节,bit,说明你的原码反码补码不还够深造,来复习一下:内存在数据中的存储时是32bit位,8个bit=一个字节(byte)
学习位段之前先再了解一下结构体与位段的区别
结构体
struct
{
student;
age;
};
位段
struct
{
int students:2;
int age:5;
}
位段多了数据类型 :其中数组类型定义的有int 与 char
其次还多了‘ :’ :后面的数字表示所需要的bit位
例如:int 数据类型的大小是4个字节,也就是32个bit,这32个bit位是来分配struct
里面‘ :’后面的数字的,且分配是逐级分配的,当下一级不能够分配或分配不了时,便会重新申请4个字节,来满足位段。
struct
{ //1.首先申请数据类型的大小:int→4个字节→32bit;char →一个字节→8个bit
int students:2;//32-2→剩余30满足下一级
int age:5;//30-5→剩余25
//注意25不能说我们就丢弃了,既然我们申请了,一律概不退货
}
位段的内存分配
我们来通过来给位段里面的变量来赋值来观测位段中的内存分配
刨析过程:
下面呢,是VS2013的测试数据
所以位段的内存分配我觉得大家了解一下就足够了,关键的是它的应用与好处。
位段的应用
结构体能干嘛,位段就能干嘛,位段相当于优化了结构体
位段的好处一句话概括:节省空间。
合理利用资源,不像结构体数据申请的字节很多,但很多时候都是浪费的。
最后总结:作为刚刚入门编程的作者
提升 = 问题+解决问题
位段知识点,需要注重的就是二进制的问题,以及数据在内存中存储。
如果你不是很了解数据在内存中的存储,可以先去看一下
内存中的容易混淆的点,帮助你避坑。
链接: link
到这里也就结束了,如果您觉得小编的文笔还不错的话,麻烦点个赞,您的支持,将是对我最大鼓励!bye !886!