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

网站做网络营销的效果为什么很多网站用php做

网站做网络营销的效果,为什么很多网站用php做,做vlogger的网站有哪些,专升本要什么条件文章目录 1.字节对齐的基本概念2.字节对齐规则3.实践出真知#xff08;加大难度#xff09;4 位域 1.字节对齐的基本概念 #xff08;1#xff09;现代计算机中内存空间都是按照byte划分的#xff0c; 从理论上讲似乎对任何类型的变量的访问可以从任何地址开始#xff0… 文章目录 1.字节对齐的基本概念2.字节对齐规则3.实践出真知加大难度4 位域 1.字节对齐的基本概念 1现代计算机中内存空间都是按照byte划分的 从理论上讲似乎对任何类型的变量的访问可以从任何地址开始 但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问 这就需要各种类型数据按照一定的规则在空间上排列而不是顺序的一个接一个的排放这就是对齐。2对齐的作用和原因各个硬件平台对存储空间的处理上有很大的不同。 一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始如果一个int型假设为32位系统如果存放在偶地址开始的地方那 么一个读周期就可以读出这32bit而如果存放在奇地址开始的地方就需要2个读周期并对两次读出的结果的高低字节进行拼凑才能得到该32bit数 据。显然在读取效率上下降很多。 2.字节对齐规则 先来看一个简单的例子 struct DATA {short flag;int data; }; printf(DATA sizeof:%d\n, sizeof(DATA));上面的输入会是多少呢这里的输出是size8,亲们可以复制代码测试看输出是多少。 那么问题来了为什么这个结构的大小不是short2字节int4字节6字节呢请看下面的对齐规则你便明白了。(1).数据类型自身的对齐值 对于char型数据其自身对齐值为1对于short型为2对于int,float,double类型其自身对齐值为4单位字节。 (2).结构体的自身对齐值 其成员中自身对齐值最大的那个值默认。 (3).指定对齐值这个对齐的值是可以人为控制的 #pragma pack(value) // 作用C编译器将按照n个字节对齐。 #pragma pack() // 作用取消自定义字节对齐方式。 //或者 #pragma pack(push, value) // 作用是指把原来对齐方式设置压栈并设新的对齐方式设置为value个字节对齐 #pragma pack(pop) // 作用恢复对齐状态 // 此时就使用指定对齐值 value。 // 两者区别加入push和pop可以使对齐恢复到原来状态而不是编译器默认 // 可以说后者更优但是很多时候两者差别不大。(4).数据成员、结构体的有效对齐值 自身对齐值和指定对齐值中取最小的那个值作为对齐值。 在倒回去看例子结构体DATA的对齐取的是4int 4字节较大所以前面的short就变成了占4个字节空间所以sizeof(DATA)输出的是8了。 为什么short就变成占4字节空间了刚开始也不太明白为什么short就变成占4字节空间了。继续看完下面的实践便明白了。 3.实践出真知加大难度 struct DATA1 {short flag1;int data;short flag2; };struct DATA2 {short flag1;short flag2;int data; };printf(DATA1 size:%d\n, sizeof(DATA1)); printf(DATA2 size:%d\n, sizeof(DATA2));运行上面的程序结果将是 DATA1 size:12 DATA2 size:8为什么会出现这样的结果呢分析 首先两个结构体取的对齐数是4int 4字节较大在结构体DATA1进行存放时假设是从地址0x00开始存放的flag1(short)存放在在0x00-0x01里面在前四个字节里面还剩下两个字节紧接着是data(int)data(int)是四个字节剩下的两个字节不够装data了。所以data(int)就新开了四个字节存放所以他的地址就是0x04-0x07最后是flag2(short)由于它只有两个字节即0x08-0x09他为了满足四字节对齐所以它也空了两个字节。最终DATA1的内存为0x00-0x11所以sizeof(DATA1)12。 我们在来看DATA2flag1(short)存放在0x00-0x01里面前四个字节里面还剩下两个字节紧接着是flag2(short)flag2(short)是两个个字节前两剩下的两个字节正好存放下存放在0x02-0x03所以前四个字节将flag1和flag2存放好了最后是data(int)data在紧接着的四个字节里存放即0x04-0x07所以最终DATA2的内存为0x00-0x07所以sizeof(DATA2)8。 [拓展]如何让结构体DATA1也变为8字节呢那就是人为控制字节对齐数。 将上面的结构体改为如下 #pragma pack(push, 2) struct DATA1 {short flag1;int data;short flag2; }; #pragma pack(pop)struct DATA2 {short flag1;short flag2;int data; };printf(DATA1 size:%d\n, sizeof(DATA1)); printf(DATA2 size:%d\n, sizeof(DATA2));修改后的输出为: DATA1 size:8 DATA2 size:8如上我们便将DATA1的字节对齐数设置为2这边便控制了DATA1的的字节数为8可以在字节对齐数为2的基础上在此分析其构成我这里就不在阐述了。 4 位域 结构体中还有一个操作叫做位域 struct A {char a : 2;short b : 3;int c : 4; };在结构体A中a的8位只有2位有效b的16位只有3为有效c的32位只有4位有效。 注意位域必须存储在同种数据类型所占的字节中不能跨两个同种数据类型所占的字节数。 也就是说后面的数字不能大于前面类型的位数。 位域不会影响 sizeof() 的规则
http://www.dnsts.com.cn/news/33804.html

相关文章:

  • 建设项目环保竣工信息公开网站网站与云平台区别吗
  • 内蒙古建设厅网站网站集约化建设意见和建议
  • 深圳建站公司招聘中小企业建站实战
  • 记事本怎么做网页河南seo排名
  • 网站开发需要什么基础只是贵金属网站模板
  • 融水苗族自治县网站建设公司承德市住房和城乡建设局官网
  • 模板网站制作公司教育信息化建设网站
  • 移动端网站如何做开放式配手机站和网站有区别吗
  • 免费创建网站的软件wordpress流主题
  • 单位网站建设维护情况报告四川企业seo
  • 长春城投建设投资有限公司网站北京做胃镜哪好德胜门网站I
  • 怎么建立一个好公司网站网站平台做推广方案设计
  • 海外网站导航html网页超链接代码
  • 做网站推广要会什么网页传奇平台
  • 上海做网站价格wordpress获取作者头像
  • 天津市网站制作 公司长春网站制作
  • 淮南网站seo怎么将本地的字体导入wordpress
  • 做海外视频的网站有哪些企业网站全屏轮播怎么做
  • 织梦网站面包屑导航怎么做江门论坛建站模板
  • 北京模板网站开发全包哪些网站可以看一级a做爰片
  • 做海报有什么素材网站知乎二手车网站设计
  • 展览公司网站建设wordpress设置页面模板
  • 做ppt的素材免费网站网页制作是干嘛的
  • 如何写手机适配网站姓氏头像在线制作免费生成图片
  • 天合建设集团网站厦门网站制作公司找哪家
  • 建站平台 绑定域名酒店网站建设的需求分析报告
  • 林和西网站建设企业网站html5
  • 做网站接项目安卓优化大师破解版
  • 新乡网站建设-中国互联佛山厂家关键词网络推广
  • 网站降权多久恢复产品毕业设计作品网站