一个 int , float, double .... 需几个字节存放,可以用 sizeof(int), sizeof(float), sizeof(double) ...计算。例如:
printf("int -- %d bytes\n",sizeof(int) )
printf("float -- %d bytes\n",sizeof(float) )
如果是1<<n的值,其实还是个整型如果是结构体位域
struct s{
inta:1
intb:1
}t
int n=t.a
这样的话,就是把这一位的值(0或1)赋给整型,n的值就是0或者1
我记得C语言中有一种叫做“位段”的东西,但是不知道现在的编译器是不是还支持:struct tag {
unsigned int a :1 //占一个bit
unsigned int b :7//占7个bit
}
这种东西在C++中不一定还支持,而且在现实的计算机中,空间往往不值得费这么大劲,编译器往往会把两个字节的东西优化为四个字节(为了速度,牺牲空间),更不要说这种计较每个bit的方法了。
如果必须要用,我建议你用位操作。比如 int a//4个byte,32个bit
a |= 0x03//把末两个bit都置为1
a = (a &~0x00FF) | (b &0xFF)//把a的低8位置为b的低八位。
等等。。。