您身边的网站建设专家
成功案例

【建站服务】阿勒泰企业网站设计 - 阿勒泰高端网站定制 - 阿勒泰品牌网站搭建 - 上往建站-域名申请

日期: 2022-09-21 05:43:33 浏览数:5


上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


阿勒泰企业网站设计 - 阿勒泰高端网站定制 - 阿勒泰品牌网站搭建 - 上往建站

网站建设.png

位域

如果程序的结构中包含多个开关量,只有 TRUE/FALSE 变量,如下:

struct{
  unsigned int widthValidated;
  unsigned int heightValidated;} status;

这种结构需要 8 字节的内存空间,但在实际上,在每个变量中,我们只存储 0 或 1。在这种情况下,C 语言提供了一种更好的利用内存空间的方式。如果您在结构内使用这样的变量,您可以定义变量的宽度来告诉编译器,您将只使用这些字节。例如,上面的结构可以重写成:

struct{
  unsigned int widthValidated : 1;
  unsigned int heightValidated : 1;} status;

现在,上面的结构中,status 变量将占用 4 个字节的内存空间,但是只有 2 位被用来存储值。如果您用了 32 个变量,每一个变量宽度为 1 位,那么 status 结构将使用 4 个字节,但只要您再多用一个变量,如果使用了 33 个变量,那么它将分配内存的下一段来存储第 33 个变量,这个时候就开始使用 8 个字节。让我们看看下面的实例来理解这个概念:

实例

#include <stdio.h>#include <string.h> /* 定义简单的结构 */struct{  unsigned int widthValidated;  unsigned int heightValidated;} status1; /* 定义位域结构 */struct{  unsigned int widthValidated : 1;  unsigned int heightValidated : 1;} status2; int main( ){   printf( "Memory size occupied by status1 : %dn", sizeof(status1));   printf( "Memory size occupied by status2 : %dn", sizeof(status2));   return 0;}

当上面的代码被编译和执行时,它会产生下列结果:

Memory size occupied by status1 : 8Memory size occupied by status2 : 4

位域声明

有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有 0 和 1 两种状态,用 1 位二进位即可。为了节省存储空间,并使处理简便,C 语言又提供了一种数据结构,称为"位域"或"位段"。

所谓"位域"是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。

典型的实例:

位域的定义和位域变量的说明

位域定义与结构定义相仿,其形式为:

struct 位域结构名 {

 位域列表


位即可。为了节省存储空间,并使处理简便,C 语言又提供了一种数据结构,称为"位域"或"位段"。


所谓"位域"是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。


典型的实例:


用 1 位二进位存放一个开关量时,只有 0 和 1 两种状态。

读取外部文件格式——可以读取非标准的文件格式。例如:9 位的整数。

位域的定义和位域变量的说明

位域定义与结构定义相仿,其形式为:


struct 位域结构名 

{


 位域列表


};

其中位域列表的形式为:


type [member_name] : width ;

下面是有关位域中变量元素的描述:


元素 描述

type 只能为 int(整型),unsigned int(无符号整型),signed int(有符号整型) 三种类型,决定了如何解释位域的值。

member_name 位域的名称。

width 位域中位的数量。宽度必须小于或等于指定类型的位宽度。

带有预定义宽度的变量被称为位域。位域可以存储多于 1 位的数,例如,需要一个变量来存储从 0 到 7 的值,您可以定义一个宽度为 3 位的位域,如下:


struct

{

  unsigned int age : 3;

} Age;

上面的结构定义指示 C 编译器,age 变量将只使用 3 位来存储这个值,如果您试图使用超过 3 位,则无法完成。


struct bs{

    int a:8;

    int b:2;

    int c:6;

}data;

data 为 bs 变量,共占两个字节。其中位域 a 占 8 位,位域 b 占 2 位,位域 c 占 6 位。


让我们再来看一个实例:


struct packed_struct {

  unsigned int f1:1;

  unsigned int f2:1;

  unsigned int f3:1;

  unsigned int f4:1;

  unsigned int type:4;

  unsigned int my_int:9;

} pack;

在这里,packed_struct 包含了 6 个成员:四个 1 位的标识符 f1..f4、一个 4 位的 type 和一个 9 位的 my_int。


让我们来看下面的实例:


实例

#include <stdio.h>

#include <string.h>

 

struct

{

  unsigned int age : 3;

} Age;

 

int main( )

{

   Age.age = 4;

   printf( "Sizeof( Age ) : %d ", sizeof(Age) );

   printf( "Age.age : %d ", Age.age );

 

   Age.age = 7;



阿勒泰企业网站设计 - 阿勒泰高端网站定制 - 阿勒泰品牌网站搭建 - 上往建站


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


全国咨询热线:400-111-6878

地址:全国各地都有驻点商务

Copyright © 2021 通陆科技

网站建设上往建站