位段的声明和结构是类似的,有两个不同:
struct A
{
int _a:2;
int _b:5;
int _c:10;
int _d:30;
};
struct A
{
int _a:2; // _a的大小为2个bit位
int _b:5; // _b的大小为5个bit位
int _c:10; // _c的大小为10个bit位
int _d:30; // _d的大小为0个bit位
};
举例如何分配内存空间:
一个个说明:因为每个成员变量只申请个位数的bit位,所以是按1个字节来申请内存空间的。
总共开辟了3个字节。
位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使用位段。
总结:跟结构相比,位段可以达到同样的效果,但是可以很好的节省空间,但是有跨平台的问题存在。

对于消息的传输,不仅仅只是把发送的消息传输到目的地就完了那么简单。实际上会将消息进行一个打包,其中还包含了很多信息,缺少这些信息是无法传输消息的。比如你的机器ip地址和你要发送的目的地(对方)的ip地址,这两个信息非常重要(当然也不是说其它信息就不重要了,图中任何一点都很重要)。
对于上面这些信息,如果不使用位段来分配,数据就会比较大。对于网络传输数据而言,当然是越小的数据量网络更流畅,就好比现实生活中的马路,大车多了会比较堵塞,要都是小车那么路况就比较畅通。
其实位段的不兼容、不可移植性也不是很可怕。解决的办法就是针对每个不同的机器/平台设计对应的程序即可,唯一的不方便之处应该就是工作量变大了,不过复制粘贴针对性改一改应该没毛病。