C语言中每个存储单元是几个字节,它由几个二进制位构成

Python011

C语言中每个存储单元是几个字节,它由几个二进制位构成,第1张

计算机存储单元以字节(BYTE)为单位,一个字节 由 8个 字元(bit),也就是 8个 二进制位 构成。

一个 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的低八位。

等等。。。