c 位域

作者: 代瑶 | 来源:发表于2021-11-28 10:44 被阅读0次
#include <stdio.h>
#include <string.h>

/* 定义简单的结构 */
struct
{
    unsigned int widthValidated;
    unsigned int heightValidated;
} status1;

/* 定义位域结构 */
struct
{
    unsigned int widthValidated : 16; //位域宽度16
    unsigned int heightValidated : 16;//位域宽度16
} status2;

int main()
{
    {
        printf("Memory size occupied by status1 : %d\n", sizeof(status1));
        printf("Memory size occupied by status2 : %d\n", sizeof(status2));

        return 0;
    }
}

int 占用4个字节, status1里面有2个int 则占用8字节。
为了节省内存空间占用,例如我仅仅用这个变量表示TRUE 或者 FALSE, 那么位域宽度设为1即可. 设置为1可以让int 只占用2字节

1表示的是二进制里面占一位, 如果设置16则是2进制的16位, int类型4字节占32位 所以位域宽度16还是占用2字节,当超过16并低于32 则会上升到4个字节

0b0e417dd9c59220fe047cf825c68e3.jpg

相关文章

  • c 位域

    int 占用4个字节, status1里面有2个int 则占用8字节。为了节省内存空间占用,例如我仅仅用这个变量...

  • C语言位运算

    C语言位运算_C语言中文网 C语言位域(位段)_C语言中文网

  • C语言----位域

    为什么使用位域 如果程序的结构中包含多个开关量,只有 TRUE/FALSE 变量,如下: 这种结构需要 8 字节的...

  • C-位域

    位域:是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。这样就可以把几个不同的对象用一个字节的二...

  • C# 位域[flags]

    .NET中的枚举我们一般有两种用法,一是表示唯一的元素序列,例如一周里的各天;还有就是用来表示多种复合的状态。这个...

  • C语言位域问题

    C语言位域问题 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时...

  • 《C语言22—位域》

    2019年3月25日星期一 多云 (声明:理论知识部分来自菜鸟教程网站!)今日学习内容: 26、C位域 如果程序的...

  • 黑色C语言 - 位域

    一、概念 位域是指信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,...

  • C语言中的位运算

    C语言中的位运算 结构体是唯一一种允许控制内存位(bit)的数据结构,称作位域(Bit Field) 位域不能离开...

  • C语言union和位域

    举例 union:union {int a;char b;short c;}un;位域:struct bitDom...

网友评论

      本文标题:c 位域

      本文链接:https://www.haomeiwen.com/subject/klvcxrtx.html