当前位置: 首页 > news >正文

甘肃建设厅网站首页网站没备案能百度推广吗

甘肃建设厅网站首页,网站没备案能百度推广吗,傻瓜式网站,买一个软件大概多少钱目录 1.什么是位段 2.位段的计算 3. 位段的内存分配 4.位段的跨平台问题 5.位段的应⽤ 6.位段使⽤的注意事项 1.什么是位段 段位的声明和结构体是类似的,但有两个不同之处: 1. 位段的成员必须是 int ,unsigned int,或 sign…

目录

1.什么是位段

2.位段的计算

3. 位段的内存分配

4.位段的跨平台问题

5.位段的应⽤

6.位段使⽤的注意事项



1.什么是位段

段位的声明和结构体是类似的,但有两个不同之处:

1. 位段的成员必须是 int ,unsigned int,或 signed int,char类型 (整形家族),在C99中位段也可以是其他类型

2. 位段的成员名后有一个冒号和一个数字

例:

struct A
{int _a : 2;  //_a只能使用2个比特位大小int _b : 5;  int _c : 10;int _d : 30;
};

这里A就是位段的类型,冒号后面的数字表示该元素所占用空间的大小(单位:bite)

冒号后面数字的大小不能超过该成员所开辟空间的大小

这段A占多大空间呢

2.位段的计算

我们知道了位段,那么位段应该怎么计算呢?

开辟规则:位段的空间上是按照需要以4个字节( int )或者1个字节( char )的⽅式来开辟的。

例:

struct B
{char _a : 3;char _b : 4;char _c : 5;char _d : 4;
};

因为是char类型,所以按照需要一次开辟1个字节 即:8个bit位,先将数据往里放,不够用了在继续开辟

第一次_a存入3个bit,然后_b继续存入4个bit,此时我们开辟的空间已经剩下1bit,支持不了_c的存放,于是又开辟了8个bit,这时分两种情况:

  1. 使用前面剩下的1bit空间,然后继续使用新开辟的8bit中的4bit
  2. 丢弃前面开辟的1bit空间,直接使用新开辟的空间存放_c

这两种情况并没有明确的规定使用哪一个,根据编译器的不同可能情况各异。我当前使用的是VS2022,是按照第二种情况开辟空间的,此时_c成员使用了5bit,还剩下3bit,已经不足以存放_c了,于是又开辟了一个空间存放_d。到此所有的成员已存放完成,使用了3字节,浪费了8bit的空间

3. 位段的内存分配

位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使⽤位段。

位段使用因环境而异,不同的环境可能需要相符合的位段,虽然麻烦,但是位段很节省空间

例:

struct B
{char _a : 3;char _b : 4;char _c : 5;char _d : 4;
};int main()
{struct B a = { 0 };a._a = 10;a._b = 12;a._c = 3;a._d = 4;return 0;
}

我们知道结构体B的大小是3字节,现在我们想在这些空间上面赋一些值

在内存分配的时候我们可能会遇到一个问题,他是怎么分配资源的呢?从左向右还是从右向左呢?

这是一条C语言标准尚未定义的规则,所以不同编译器下可能不一样,在VS2022编译器下经过测试是按照从右往左使用的

所以VS2022上的分配情况:

存放数据示图:

原本_a是1010,由于_a只有3个bit的空间,所以只能舍弃前面的1

我们将二进制转换为十六进制,

先写出这三个空间的二进制:01100010 00000011 00000100  

转换十六进制:64   03  04

4.位段的跨平台问题

  • int位段被当成有符号数还是⽆符号数是不确定的。
  • 位段中最⼤位的数⽬不能确定。(16位机器最⼤16,32位机器最⼤32,写成27,在16位机器会 出问题。
  • 位段中的成员在内存中从左向右分配,还是从右向左分配,标准尚未定义。
  • 当⼀个结构包含两个位段,第⼆个位段成员⽐较⼤,⽆法容纳于第⼀个位段剩余的位时,是舍弃剩余的位还是利⽤,这是不确定的。

在使用位段时需要十分谨慎,因为跟结构相⽐,位段可以达到同样的效果,并且可以很好的节省空间,但是有跨平台的问题存在。

5.位段的应⽤

使用微信,qq,以及其他的一些聊天软件时,我们只需将发送的内容写入对话框并点击发送即可,但是这其中要实现不像我们操作的这么简单

比你想象得更加复杂的多,当你发消息给某人时,系统需要知道这个信息从哪来,到哪去,以及这条信息的生存时间等等

如图:

如上图我们使用段位就可以节省大量空间,而且当我们发送消息时,发出去得数据包越小,我们传输的效率就越高,打个比方,在满是汽车的高速公路上,如果所有车都是小汽车,那么交通就会很便利,流畅,但如果全是大货车,体型很大的车,那么就会让交通很堵塞,交通不便利

6.位段使⽤的注意事项

位段的⼏个成员共有同⼀个字节,这样有些成员的起始位置并不是某个字节的起始位置,那么这些位 置处是没有地址的。内存中每个字节分配⼀个地址,⼀个字节内部的bit位是没有地址的。所以不能对位段的成员使⽤&操作符,这样就不能使⽤scanf直接给位段的成员输⼊值,只能是先输⼊ 放在⼀个变量中,然后赋值给位段的成员。

struct B
{char _a : 3;char _b : 4;char _c : 5;char _d : 4;
};int main()
{struct B a = { 0 };scanf("%d", &a._a);//错误的演示,编译器会报错,不允许使用位域的地址//正确的操作int b = 10;a._a = b;return 0;
}
http://www.yayakq.cn/news/813792/

相关文章:

  • 昆明专业做网站多少钱wordpress隐私提示
  • 买源码做网站值吗二次开发软件
  • 科技网站 网站建设设计师常用的灵感网站
  • 漯河网站建设xknt18.ppt网站是谁做的
  • wordpress 自动采集插件怎么用优化大师
  • 什么是网站的推广查询网站收录情况的方法
  • 网站制作设计收费标准wordpress看到网络蜘蛛
  • 网站建设作业指导书临沂做百度网站软件公司
  • 网站建设公司推广方案注册公司取什么名字最佳
  • 厦门专业做网站公司网站虚拟主机行吗
  • 网站开发配置管理计划做视频网站需要哪些技术指标
  • 东莞港货网站建设菏泽网站网站建设
  • 网站建设公司哪里有网站开发 哪些文档
  • 网站如何优化流程公众号制作公司
  • 摄影网站论文做网站注册商标哪一类
  • dreamwearver可以做网站吗有域名后怎么建网站
  • 宁波网站建设找哪家好什么类型客户做网站
  • 福州 网站设计商城定制开发
  • 中国市政建设局网站预约网页怎么制作
  • 山西企业建站系统平台永久免费空间服务器
  • 有api接口怎么做网站wordpress目录页去掉
  • 软件开发 网站开发公司中国500强排名一览表
  • 长沙做网站 必看 磐石网络企业在线查询
  • 自己买服务器建设网站广州番禺属于哪个区
  • 做公司网站的模板下载东莞网站优化方案
  • 企业网站seo贵不贵php网站开发心得体会
  • 国人在线做网站怎么样网站建设评判标准
  • 网站使用方法国际人才网app
  • wordpress社交网站饰品 东莞网站建设
  • 简洁企业网站源码网页制作成品图加代码