C语言位域的使用详细分析

2429 人浏览 | 时间: 2015-06-26 23:21:19 | 作者: codexia

    C语言位域的使用,在开发中是非常常见的,比如各种协议的解析、各种文件格式的解析等都需要用到位域。因为为了充分利用内存或者减少通信量,定义各种协议格式等都是以位为单位,而不是以字节为单位。而对于位域的理解,很多人经常会感觉不清不楚。说会用也会用,但是也说不出所以然。
在开发的过程中,会为了节省内存,或者为了降低通信的信息量,而以位作为最小单位。通常用一个字节表示的一个状态,可以使用几个位组合起来表示,这样,一个字节可以存放多个状态,而不是多个字节,这样也就节省了大量的内存。内存开销变小,网络发送的数据包小了,因此效率也高了。
为了支持这样的需求,C语言就使用了位域。对于位域的理解,可以简单理解为一个结构体,用法也和结构体一样。不同的就是表示的单位变小。在这里就所有区别,这里也是让我疑惑的地方。而网上找了很多发现不是转载就是抄袭,对于我心里的疑问没有得到解答。
没有办法,又要自己研究一下了。通过实践来验证我的假设,然后来解决我的疑问。
    首先我们来看看位域类型的定义、声明和使用。
    不要觉得位域很神秘的样子,在定义位域类型、声明位域变量,和使用位域变量,和结构体没有两样,一模一样。那么此时,使用位域你是不是有了清晰的思路了呢?如果不清楚,那么请复习结构体的使用。
然后,结构体是以字节位最小单位的,而位域则是以位为最小单位,位域中的成员大小则是可以自己指定的。但是注意,位域成员的大小最大不能超过定义的类型的所占的位数。如:

请微信扫码阅读。
为防止恶意爬虫,
已开启反爬机制,
理解哟~~~~
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
收藏 0 点赞 0

相关阅读