xyjzsh

按位使用数据以及union

例如:
typedef union tagData
{
   long x:2;
   long y:4;
   long data;
}data_item,*pdata_item;

上述是一个联合体,联合体的对象用的空间是类型中占用内存最大的哪个,例如上例中data_item变量占用4个字节。
long x:2;
表示x占用2bit
long y:4;
表示y占用4bit
long data;
data占用4byte
所以上述union占用4byte空间。
long s=sizeof(data_item);
s=4;

因为x,y,data公用内存空间。
从低位开始,即
x占用空间的低2bit,即0-1
y占用空间2~5bit
x,y都是可以是有符号的,相对最高位表示符号位。
例如,
item_data t={0};
(1) t.data = 2;
2表示成二进制位10.
所以t.x 的值为-2;
(2) t.data = 3;
3表示成二进制位11
所以t.x的值为-1
(3) t.data =1;
此时t.x的值为1

t.y的取值的道理同t.x;
对于t.y来说第5位表示正负号。



posted on 2011-03-15 17:34 呆人 阅读(547) 评论(0)  编辑 收藏 引用 所属分类: 数据结构


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜