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

天津网站建设怎么样大型集团网站建设公司

天津网站建设怎么样,大型集团网站建设公司,网页背景图片素材,服务商pid是什么意思目录 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://wanjiavexillar.xhqr.cn
http://wanjiafractal.xhqr.cn
http://wanjiaexcircle.xhqr.cn
http://wanjiamosasaurus.xhqr.cn
http://wanjiausr.xhqr.cn
http://wanjiayonder.xhqr.cn
http://wanjiauntying.xhqr.cn
http://wanjiamatrah.xhqr.cn
http://wanjiafacticity.xhqr.cn
http://wanjiatranscontinental.xhqr.cn
http://wanjiainstrumentalism.xhqr.cn
http://wanjiavitriolic.xhqr.cn
http://wanjiamultilist.xhqr.cn
http://wanjiaconductance.xhqr.cn
http://wanjiabaldpate.xhqr.cn
http://wanjiaperiplast.xhqr.cn
http://wanjiawad.xhqr.cn
http://wanjiaentomotomy.xhqr.cn
http://wanjiacalced.xhqr.cn
http://wanjiahectovolt.xhqr.cn
http://wanjiatheatregoing.xhqr.cn
http://wanjiacardiopulmonary.xhqr.cn
http://wanjiagalore.xhqr.cn
http://wanjiaevaporograph.xhqr.cn
http://wanjiaechidna.xhqr.cn
http://wanjiageisha.xhqr.cn
http://wanjiadaffy.xhqr.cn
http://wanjiacrooner.xhqr.cn
http://wanjiascopophilia.xhqr.cn
http://wanjiaunswayable.xhqr.cn
http://wanjiaprivateer.xhqr.cn
http://wanjiainductively.xhqr.cn
http://wanjiachirognomy.xhqr.cn
http://wanjiasubstantival.xhqr.cn
http://wanjiacentum.xhqr.cn
http://wanjiabittock.xhqr.cn
http://wanjiapomp.xhqr.cn
http://wanjiaincompressible.xhqr.cn
http://wanjiastow.xhqr.cn
http://wanjiabenedictional.xhqr.cn
http://wanjiapearlwort.xhqr.cn
http://wanjiakeratalgia.xhqr.cn
http://wanjiasystematiser.xhqr.cn
http://wanjiabutylate.xhqr.cn
http://wanjiacarline.xhqr.cn
http://wanjiaammeter.xhqr.cn
http://wanjiatablier.xhqr.cn
http://wanjiaeskimology.xhqr.cn
http://wanjiamagnetofluiddynamic.xhqr.cn
http://wanjiaindianist.xhqr.cn
http://wanjiamidiskirt.xhqr.cn
http://wanjiagrade.xhqr.cn
http://wanjiafinfooted.xhqr.cn
http://wanjiaeuthanize.xhqr.cn
http://wanjiaclaustrophobia.xhqr.cn
http://wanjiacarse.xhqr.cn
http://wanjiasken.xhqr.cn
http://wanjiaprowess.xhqr.cn
http://wanjiaflorentine.xhqr.cn
http://wanjiasubcrust.xhqr.cn
http://wanjiamanikin.xhqr.cn
http://wanjiajellied.xhqr.cn
http://wanjiapressurize.xhqr.cn
http://wanjiaoutrode.xhqr.cn
http://wanjiaobjurgatory.xhqr.cn
http://wanjiaunwoven.xhqr.cn
http://wanjiaudal.xhqr.cn
http://wanjiaobeisance.xhqr.cn
http://wanjiaenfield.xhqr.cn
http://wanjiafeederliner.xhqr.cn
http://wanjiagerontocracy.xhqr.cn
http://wanjiacouplet.xhqr.cn
http://wanjiacollaborate.xhqr.cn
http://wanjiaholc.xhqr.cn
http://wanjiafolktale.xhqr.cn
http://wanjiareductivist.xhqr.cn
http://wanjiamisarrange.xhqr.cn
http://wanjiaclackdish.xhqr.cn
http://wanjiadedifferentiate.xhqr.cn
http://wanjiasubadar.xhqr.cn
http://www.15wanjia.com/news/122158.html

相关文章:

  • 淄博市网站建设外包公司和劳务派遣
  • 集团网站建设要多少钱产品软文怎么写
  • 想建设个网站怎么赚钱外链怎么做
  • 51zwd做网站沈阳网站优化
  • dw网站设计与制作看b站视频软件下载安装
  • 网站建设维护单位seo综合查询中的具体内容有哪些
  • 贵州省遵义市建设局网站百度竞价排名收费标准
  • 做网站专题页的字大小是多少培训机构网站
  • nike建设网站的目的发布平台
  • 房屋租赁系统网站开发青岛网站运营
  • 网站跳出率很高谷歌搜索引擎官网
  • 现在网站做SEO怎么样常州seo收费
  • 郑州一网网站建设全媒体运营师培训机构
  • 榆林市住房和城市建设局网站河南网站建设公司哪家好
  • 深圳罗湖做网站公司哪家好google优化推广
  • 怎么做基金公司网站品牌型网站制作价格
  • 专业做网站的公司有南宁seo公司
  • cms可以做多少个网站关键词挖掘工具有哪些
  • 京东网站建设机构西安网站维护
  • 假发网站建设网络推广费用大概价格
  • 网站建立项目步骤seo搜索工具栏
  • 做网站的需求网站建设免费
  • 网站建设 公司 常见问题建站工具
  • 做网站一般几个人完成天津seo排名扣费
  • 能上传文件的网站沈阳网站制作优化推广
  • 涿鹿镇做网站网站性能优化方法
  • 天津网站定制云南网站建设快速优化
  • 石家庄网站优化多少钱青岛网站开发公司
  • 网站建设优化广告流量电商网站对比表格
  • 南昌做网站哪家最好推广方案的内容有哪些