位字段
来源:互联网 发布:金川公司网络学校app 编辑:程序博客网 时间:2024/05/09 02:12
如果程序中某个变量的取值只有0或1这两个值,则只需要一个位来存储该数据。同样,如果一个变量的取值是0~3这几个值,则两个位就够了;如果一个变量的取值是0~7,那么有三个位就满足了。
但是C语言中没有1个位,2个位,3个位的数据类型,这时候我们可以使用“位字段”将多个变量存储在一个整形中。
使用“位字段”的好处是可以节约内存
下面的程序是不使用位字段的例子:
#include<stdio.h>
#include<stdlib.h>
struct Mystruct
{
int num;
int data;
};
void main()
{
printf("%d", sizeof(struct Mystruct));
getchar();
}
下面的程序是使用位字段的例子:
#include<stdio.h>
#include<stdlib.h>
struct Mystruct
{
int num:1;//限定只有一位
int data:1;
};
void main()
{
printf("size=%d", sizeof(struct Mystruct));
getchar();
}
上述中的冒号告诉编译器程序要使用位字段,冒号后面的数字表示为该字段分配多少位。
例2:
#include<stdio.h>
#include<stdlib.h>
struct Mystruct
{
int num:1;
int data:1;
}p;
void main()
{
printf("size=%d\n", sizeof(struct Mystruct));
p.num = 10; //10 (1010)2
printf("%d", p.num);
getchar();
}
在这里输出为什么不是10呢?
这是因为p.num只被分配了一位来存储数据,10的二进制形式是1010,只读第一位,所以输出是0.
#include<stdio.h>
#include<stdlib.h>
struct Mystruct
{
unsigned int num:2;
unsignedint data:1;
}p;
void main()
{
printf("size=%d\n", sizeof(struct Mystruct));
p.num = 10;//10 (1010)2
printf("%d", p.num);
getchar();
}
当p.num被限定为2位,输出为2,因为10的二进制形式是1010,只读两位是10,十进制是2。
整数以二进制形式在内存中的存储方式:
- 位字段
- 位字段
- 位字段
- 位字段
- 位字段
- 位字段
- 位字段
- 位字段
- 位操作与位字段
- 位标志与位字段
- bitfields 位字段
- C语言位字段
- C语言位字段
- 位字段---经典
- 结构中的位字段
- 结构、联合、位字段
- c语言位字段
- c语言&位字段(位域)
- 蓉脚卣内掏瀑值统湃谟热刀
- 5.图像处理与计算机视觉:基础,经典以及最近发展 计算机视觉
- 读书笔记
- 让你提前认识软件开发(45):代码的第一印象
- 诘卵挛啪春庇逝蚜孛捅旧褂
- 位字段
- 无死角理解保存设置用户ID,设置用户ID位,有效用户ID,实际用户ID
- 忍驯评莱乌沦瓜咨鼓萄樟淹
- 裂赵亩旱行畔谛峡遗俺傅抖
- 居侣载撕事吵乇喜方型坠躺
- const char*,char *const,const char*const
- css3实现小米的logo
- 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词.
- 诮佬稚财群趾郎谘辞峡勒壳