比特域
来源:互联网 发布:ov7670 linux 编辑:程序博客网 时间:2024/04/27 22:48
比特域是一种由结构体扩展而来的数据结构组织形式,也称为位域,占位符等。
类似下面的定义:
structcard{
unsigned int pips:4;//占据4个位的长度
unsigned int suit:2;
unsigned char kq:2;
...}
跟在变量声明后面的非负正常数是该数据所占据的比特宽度,比特宽度最多是机器字的长度,对于PC机和Windows操作系统而言,这个值是32。
一个32位的int型数据可以存放的数据范围是极大的,在我们的程序中往往并不需要这样大的表示范围,因此,使用比特域把数据压缩到一定的表示范围内,
可以有效的节省程序所需要的内存量,这在系统内存容量极为有限的嵌入式系统开发中是很重要的!
在上面的结构中,card变量拥有一个4比特的域pips来存贮0--15的非负整数,
一个2比特的域suit来存贮0--3
以及一个2比特的域kq。实际上,上面定义中的int和char在很多情况下也是可以省略掉的,这样在比特域中所定义的数据结构实际上就与这些基本类型是无关的,只是表示一定区域的一些有符号整形数或者无符号整形数。因此,在声明变量的时候unsigned或者signed是必须注明的,因为编译器需要确切的知道所定义的变量的精确取值范围。
但是,应该注意的是:不同的编译器对于比特域如何分配是有不同定义的,而且使用比特域组织的程序往往可移植性不好,因此,除非是确实需要节省内存,
否则比特域(包括联合)最好不要使用。
- 比特域
- 比特域
- 比特域
- 比特域的大段小端区别
- 位域,大小端,比特序
- 对于位域在结构体中的比特序
- 比特币
- 比特币
- 比特币
- 比特币
- 比特是什么
- 比特语法
- 比特币矿池
- 比特币矿机
- 比特币挖矿
- 比特币
- 比特币
- 精通比特
- CodeJock如何通过vs编译成两个dll文件
- 基于VTK的任意平面切割
- 排序学习参考资料
- 10大支持移动“触摸操作”的JavaScript框架推荐
- Android eclipse常用快捷键
- 比特域
- c++右值引用 转移构造函数
- oracle限制某IP的连接数
- linux sda sdb 问题 .
- 使用QT连接Oracle数据库总结
- git 分支的 创建 修改 切换 查看 从远程仓库抓取数据 以及 提交时忽略某文件
- php apns push备忘
- HTTP POST GET 本质区别详解
- 数据结构 学习笔记之:静态链表--史上最简单的C语言实现——只为掌握概念——不清楚静态链表的鸟鸟们有福了!