zoukankan      html  css  js  c++  java
  • 按位使用数据以及union

    本文转载自 http://www.cppblog.com/xyjzsh/archive/2011/03/15/141901.html

    按位使用数据以及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位表示正负号。

  • 相关阅读:
    关于多机处理问题
    Prime
    Djkstra
    jbdc总结
    mysql存储过程
    sqlHelper 类型的编写
    JDBC开发
    java线程
    java事件监听机制
    坦克大战编程
  • 原文地址:https://www.cnblogs.com/thoughtInShare/p/14060376.html
Copyright © 2011-2022 走看看