C语言中的位域
来源:互联网 发布:小米手机清空所有数据 编辑:程序博客网 时间:2024/05/06 09:23
今天在一个群里看到了这样一个题
typedef struct{ unsigned char ucid:1; unsigned char ucid1:2; unsigned char ucid2:6; unsigned char ucid3:4; unsigned char ucid4; unsigned char ucid5:4; unsigned long ucid6;} s ;
问 “:”是什么含义,看后我感觉没有见过,于是就上网查了一下。以下是我个人理解的,望大牛们来指正,教导。
以上其是一个“位域”,平常我们在使用struct定义的结构体的时候,我们知道有一些值是很小的,也就是说一些用来记录状态的变量,它们本不需要占那么几个字节,那么就有很多位空在那,没有用上,说白了就是浪费了。而位域就很好的结决了这个问题,其使能够很好的支配一个字节的存储空间。“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,答应在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。
例如
struct k{ unsigned int a:1 ;//表示a只用了1位2进制位 int :2 ;//没有名字的为空域,就是这2位不使用 unsigned int b:2 ;//表示b用两位 unsigned int c:3 ;//c用3位} ;int main (){ struct k kk ; kk.a = 3 ;//======1位 kk.b = 5 ;//======2位 printf ( "%u,%u\n", kk.a,kk.b ) ;//结果是1, 1 ; return 0 ;}
还有一点就是如果你要存储的超出剩下的位数,则需要将整个位域移到下一个字节中定义,也就是说位域的位数超过八位。
- C语言中的位域
- c语言中的位域
- C语言中的位域
- C语言中的位域
- C语言中的位域
- C语言中的位域
- C语言中的位域
- C语言中的位域
- C语言中的位域
- C语言中的位域
- C语言中的位域
- C语言中的位域
- c 语言中的位域
- C语言中的位域
- C语言中的位域的使用
- C语言中的位域的使用
- C语言中的位域的使用
- C语言中的位域的使用
- 算法----中位数算法的妙用(更新中)
- android 安全学习从何入手?
- (4)统计一个数字,在排序数组中出现的次数
- Hibernate正向工程实例
- 骨牌铺方格
- C语言中的位域
- 最长队名(处理字符串问题)
- ubuntu-U盘安装
- memcpy 大意了
- 简单排序
- 推荐系统开源软件汇总和评点
- 播放器(模拟题,细心)
- Linux环境下段错误的产生原因及调试方法小结
- setTimeOut()用法