中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

人工客服系統(tǒng)代做seo關(guān)鍵詞排名

人工客服系統(tǒng),代做seo關(guān)鍵詞排名,濟(jì)南論壇網(wǎng)站建設(shè),西安網(wǎng)站建設(shè) 北郊一:字節(jié)對(duì)齊的概念 針對(duì)字節(jié)對(duì)齊,百度百科的解釋如下: 字節(jié)對(duì)齊是字節(jié)按照一定規(guī)則在空間上排列,字節(jié)(Byte)是計(jì)算機(jī)信息技術(shù)用于計(jì)量存儲(chǔ)容量和傳輸容量的一種計(jì)量單位,一個(gè)字節(jié)等于8位二進(jìn)制數(shù),在UTF-8編…

一:字節(jié)對(duì)齊的概念

? ? ? ? 針對(duì)字節(jié)對(duì)齊,百度百科的解釋如下:

????????字節(jié)對(duì)齊是字節(jié)按照一定規(guī)則在空間上排列,字節(jié)(Byte)是計(jì)算機(jī)信息技術(shù)用于計(jì)量存儲(chǔ)容量和傳輸容量的一種計(jì)量單位,一個(gè)字節(jié)等于8位二進(jìn)制數(shù),在UTF-8編碼中,一個(gè)英文字符等于一個(gè)字節(jié),字節(jié)按照一定規(guī)則在空間上排列就是字節(jié)對(duì)齊。

? ? ? ? 上面就提到按照一定規(guī)則,那規(guī)則是什么,按什么規(guī)則去對(duì)齊,帶著這個(gè)疑問(wèn)往下走

二:為什么要字節(jié)對(duì)齊

? ? ? ? 我們?yōu)槭裁匆M(jìn)行字節(jié)對(duì)齊,不對(duì)齊會(huì)有什么后果,在計(jì)算機(jī)中我們?nèi)魏我粋€(gè)動(dòng)作無(wú)非就是保證程序的正確性,提高程序的性能和可靠性。

? ? ? ? 1,平臺(tái)的硬要求,必須要字節(jié)對(duì)齊

????????某些平臺(tái)對(duì)特定類型的數(shù)據(jù)只能從特定地址開始存取,而不允許其在內(nèi)存中任意存放。例如,Motorola 68000 處理器不允許16位的字存放在奇地址,否則會(huì)觸發(fā)異常,因此在這種架構(gòu)下編程必須保證字節(jié)對(duì)齊。

? ? ? ? 2,提高程序的性能

? ? ? ? 字節(jié)對(duì)齊如何能提高程序的性能?CPU內(nèi)部有幾個(gè)重要的部件決定了CPU一次能處理的字節(jié)和可訪問(wèn)的內(nèi)存大小。寄存器,ALU和數(shù)據(jù)總線的位數(shù),這些共同決定了CPU的字長(zhǎng),常見CPU的字長(zhǎng)有4位,8位,16位,32位和64位。字長(zhǎng)越多,則CPU內(nèi)部硬件規(guī)模和造價(jià)越高。如果CPU字長(zhǎng)是16位。它的寄存器和總線也是16位。那么它一次處理的數(shù)據(jù)長(zhǎng)度就為2字節(jié)。

? ? ? ? 當(dāng)訪問(wèn)一個(gè)變量時(shí),當(dāng)該變量的地址為偶地址(即字變量的低字節(jié)在偶地址單元,高字節(jié)在奇地址單元),則需要一個(gè)總線周期訪問(wèn)該字變量;如果該字變量的地址為奇地址(即字變量的低字節(jié)在奇地址單元,高字節(jié)在偶地址單元),則需要用兩個(gè)連續(xù)的總線周期才能訪問(wèn)該字變量,每個(gè)周期訪問(wèn)一個(gè)字節(jié)。

? ? ? ? 字節(jié)對(duì)齊讓CPU讀取數(shù)據(jù)的效果高了,這就解釋了為什么字節(jié)對(duì)齊能提高程序的性能。

? ? ? ? 3,節(jié)省程序的內(nèi)存

? ? ? ? 下面我們以一個(gè)實(shí)際的例子來(lái)看看字節(jié)對(duì)齊如何節(jié)省內(nèi)存

#include <stdio.h>
#include <stdlib.h>struct byte1
{char a;int b;short c;
};struct byte2
{char a;short c;int b;
};int main()
{// please write your code hereprintf("struct byte1 size:%d\n",sizeof(struct byte1));printf("struct byte2 size:%d\n",sizeof(struct byte2));
}

?可以看到,同樣是存儲(chǔ)一個(gè)char,一個(gè)int,一個(gè)short,結(jié)構(gòu)體中順序不一樣,結(jié)構(gòu)體的所占的空間也不一樣。之所以出現(xiàn)上述結(jié)果,就是因?yàn)榫幾g器要對(duì)數(shù)據(jù)成員在空間上進(jìn)行對(duì)齊

三:字節(jié)對(duì)齊規(guī)則

1,基本類型對(duì)齊規(guī)則

基本類型包括char、int、float、double、short、long等基本數(shù)據(jù)類型。CPU位數(shù)不同所占的字節(jié)數(shù)也不一樣,如下圖所示

在這里插入圖片描述

?????????對(duì)齊要求:起始地址為其長(zhǎng)度的整數(shù)倍即可。如,int類型的變量起始地址要求為4的整數(shù)倍,char類型的變量只占一個(gè)字節(jié),那起始地址放哪都行。

2,結(jié)構(gòu)體對(duì)齊規(guī)則

1>每個(gè)數(shù)據(jù)成員的起始位置必須是自身大小的整數(shù)倍;?

2>結(jié)構(gòu)體總大小必須是結(jié)構(gòu)體成員中最大的對(duì)齊模數(shù)的整數(shù)倍;

3>?結(jié)構(gòu)體包含數(shù)組時(shí),按單個(gè)類型對(duì)齊方式;

4>共用體union取成員的最大內(nèi)存,但包含在結(jié)構(gòu)體內(nèi)時(shí),按union內(nèi)部最大類型字節(jié)數(shù)的整數(shù)倍開始存儲(chǔ);

struct byte1
{char a;int b;short c;
};

結(jié)構(gòu)體大小:12
解釋:char占一個(gè)字節(jié),int占四個(gè)字節(jié),由于int的起始地址要在4的倍數(shù)上,char后邊補(bǔ)齊3個(gè)字節(jié),shor占兩個(gè)字節(jié),但是整個(gè)結(jié)構(gòu)體大小要是最大的對(duì)齊模數(shù)的整數(shù)倍,即4的倍數(shù),所以補(bǔ)兩個(gè)字節(jié),一共12個(gè)字節(jié)

struct byte2
{char a;short c;int b;
};

結(jié)構(gòu)體大小:8

解釋:char占一個(gè)字節(jié),short占兩個(gè)字節(jié),由于short的起始地址要在2的倍數(shù)上,char后邊補(bǔ)齊1個(gè)字節(jié),int占四個(gè)字節(jié),剛好在4的倍數(shù)上,所以總共8個(gè)字節(jié)

那結(jié)構(gòu)體里嵌套結(jié)構(gòu)體呢?

結(jié)構(gòu)體包含另一個(gè)結(jié)構(gòu)體成員,則被包含的結(jié)構(gòu)體成員要從其原始結(jié)構(gòu)體內(nèi)部的最大對(duì)齊模數(shù)的整數(shù)倍地址開始存儲(chǔ)(比如struct a里含有struct b,b中有char、double 、int?元素,那么b應(yīng)該從8(double)的整數(shù)倍開始存儲(chǔ))

結(jié)構(gòu)體嵌套共同體

結(jié)構(gòu)體包含共用體成員,則該共用體成員要從其原始共用體內(nèi)部成員中的最大對(duì)齊模數(shù)的整數(shù)倍地址開始存儲(chǔ)

結(jié)構(gòu)體最后包含0數(shù)組

struct byte2
{char a;short c;int b;double d[0];
};

結(jié)構(gòu)體最后包含0數(shù)組,那0數(shù)組占空間嗎?長(zhǎng)度為0的數(shù)組的主要用途是為了滿足需要可變長(zhǎng)度的結(jié)構(gòu)體,具體用法是在一個(gè)結(jié)構(gòu)體的最后,申明一個(gè)長(zhǎng)度為0的數(shù)組,就可以使得這個(gè)結(jié)構(gòu)體是可變長(zhǎng)的。對(duì)于編譯器來(lái)說(shuō),此時(shí)長(zhǎng)度為0的數(shù)組并不占用空間,因?yàn)閿?shù)組名本身不占空間,它只是一個(gè)偏移量,數(shù)組名這個(gè)符號(hào)本身代表了一個(gè)不可修改的地址常量。

3,共同體對(duì)齊規(guī)則

共同體的內(nèi)存除了取最大成員內(nèi)存外,還要保證是所有成員類型size的最小公倍數(shù)。

union byte3
{char a;short c[5];int b;
};

?共同體byte3中最大成員就是short c[5],占10個(gè)字節(jié),由于要保證是所有成員類型size的最小公倍數(shù),即4個(gè)倍數(shù),所以是12

4,存在#pragma pack宏的對(duì)齊規(guī)則

#pragma pack(n)//編譯器將按照n個(gè)字節(jié)對(duì)齊

#pragma pack()//取消自定義字節(jié)對(duì)齊方式

******對(duì)齊規(guī)則******

結(jié)構(gòu)體、聯(lián)合、類的結(jié)構(gòu)成員,第一個(gè)放在偏移為0的地方,以后每個(gè)數(shù)據(jù)成員的對(duì)齊,按照#pragma pack指定的數(shù)值和自身對(duì)齊模數(shù)中最小的那個(gè)。

結(jié)構(gòu)體的大小是#pragma pack指定的數(shù)值的整數(shù)倍。

#pragma pack(4)
typedef struct 
{int age;char name[0];double a;
} Person;
#pragma pack();//結(jié)束#pragma pack(4)對(duì)齊。  如果沒(méi)有結(jié)束,aa也按照#pragma pack(4)對(duì)齊typedef struct 
{double age;Person k;
} aa;int m=sizeof(Person); // m=12, 按照4字節(jié)對(duì)齊
int n=sizeof(aa); // n=24,  按照8字節(jié)對(duì)齊        按照#pragma pack(4)對(duì)齊的話,n=20

5,位域字節(jié)對(duì)齊規(guī)則

“位域”是把一個(gè)字節(jié)中的二進(jìn)位劃分為幾個(gè)不同的區(qū)域,并說(shuō)明每個(gè)區(qū)域的位數(shù)。使用位域的主要目的是壓縮存儲(chǔ)。

位域列表的形式為:?類型說(shuō)明符 位域名:位域長(zhǎng)度(單位:位 bite)

如:struct bs
? ? ? {
? ? ? ? ? ?int a:8;
? ? ? ? ? ?int b:2;
? ? ? ? ? ?int c:6;
? ? ? ?} data;
其中位域a占8位,位域b占2位,位域c占6位。

位域說(shuō)明:

1.?一個(gè)位域必須存儲(chǔ)在同一個(gè)字節(jié)中,不能跨兩個(gè)字節(jié)。如一個(gè)字節(jié)所??臻g不夠存放另一位域時(shí),應(yīng)從下一單元起存放該位域。

2. 由于位域不允許跨兩個(gè)字節(jié),因此位域的長(zhǎng)度不能大于一個(gè)字節(jié)(8位)的長(zhǎng)度,也就是說(shuō)不能超過(guò)8位二進(jìn)位。
3. 位域可以無(wú)位域名,這時(shí)它只用來(lái)作填充或調(diào)整位置。無(wú)名的位域是不能使用的。例如:?int :2
?

位域?qū)R規(guī)則

1) 如果相鄰位域字段的類型相同,且其位寬之和小于類型的sizeof大小,則后面的字段將緊鄰前一個(gè)字段存儲(chǔ),直到不能容納為止;

2) 如果相鄰位域字段的類型相同,但其位寬之和大于類型的sizeof大小,則后面的字段將從新的存儲(chǔ)單元開始,其偏移量為其類型大小的整數(shù)倍;

3) 如果相鄰的位域字段的類型不同從新的存儲(chǔ)單元開始,偏移量為其類型大小的整數(shù)倍,即不壓縮;(各編譯器的具體實(shí)現(xiàn)有差異,VC6采取不壓縮方式,Dev-??

? ? ?C++采取壓縮方式)

4) 如果位域字段之間穿插著非位域字段,則不進(jìn)行壓縮

5)?整個(gè)結(jié)構(gòu)體的總大小為最寬基本類型成員大小的整數(shù)倍。


例題:

(1)typedef?struct??AA
{
???????unsigned?int?b1:5;
???????unsigned?int?b2:5;
???????unsigned?int?b3:5;
???????unsigned?int?b4:5;
???????unsigned?int?b5:5;
}AA;

sizeof(AA)= 4?

【解析】參考規(guī)則 1)。由于相鄰成員類型相同,unsigned?int為 4 個(gè)字節(jié),b1占5位,b2加上b1的位數(shù)之和為10位,不超過(guò)4字節(jié),因此b2接著b1繼續(xù)存儲(chǔ);

? ? ? 同理b3、b4、b5的類型相同,位數(shù)之和不超過(guò)4字節(jié),因此接著b2繼續(xù)存儲(chǔ),總位數(shù)為25位。

? ? ? 由于結(jié)構(gòu)體的大小是最寬類型成員的整數(shù)倍,因此25位之后的補(bǔ)0,直到補(bǔ)滿4字節(jié)。

(2)typedef?struct??AA
{
???????unsigned?int?b1:5;
???????unsigned?int?b2:5;
???????unsigned?int?b3:5;
???????unsigned?int?b4:5;
???????unsigned?int?b5:5;
???????unsigned?int?b6:5;
???????unsigned?int?b7:5;
}AA;
? ?sizeof(AA)= 8?

【解析】參考規(guī)則 1) 和規(guī)則 2) 。由于相鄰成員類型相同,unsigned?int為 4 個(gè)字節(jié)(32位),當(dāng)存儲(chǔ)到 b7 時(shí),b7和b6之前的位數(shù)相加超過(guò)4字節(jié),

因此b7從新的存儲(chǔ)單元開始存儲(chǔ)。

即b1~b6?存儲(chǔ)在 第0~29位,第30、31位補(bǔ)0,b7從下一個(gè) 4字節(jié)存儲(chǔ)單元 開始存儲(chǔ)5位,剩下的補(bǔ)0。

?(3)struct test1

{

char a:1;

char :2;

long b:3;

char c:2;

};

?sizeof(test1)= 12

【解析】 

char a:1; //用一個(gè)字節(jié)去存儲(chǔ)

char :2;  //空域。因?yàn)榕c前面的a的類型相同,而兩個(gè)位域的位寬相加仍然少于8位,所以依然用1個(gè)字節(jié)表示

long b:3; //long類型的位寬是4個(gè)字節(jié),與前面的char類型不同,所以b與a之間偏移4個(gè)字節(jié),它們之間自動(dòng)補(bǔ)充3個(gè)字節(jié) 

char c:2; //因?yàn)閏與b又不同型,以test1中的最長(zhǎng)的long類型的位寬進(jìn)行偏移,所以雖然char只用1個(gè)字節(jié)就夠了,但依然要占4個(gè)字節(jié)。

結(jié)構(gòu)體總長(zhǎng)以最長(zhǎng)的類型位寬做為偏移量,最長(zhǎng)的是long型,占4位,所以不同類型之間應(yīng)該是4個(gè)字節(jié)的偏移,即test1應(yīng)該是4字節(jié)的整數(shù)倍。 

總共是12字節(jié)。

http://www.risenshineclean.com/news/4248.html

相關(guān)文章:

  • 漂亮的手機(jī)網(wǎng)站模板下載最新的軍事新聞
  • 蘇州市城鄉(xiāng)建設(shè)檔案館網(wǎng)站如何看待百度競(jìng)價(jià)排名
  • 什么是網(wǎng)站獨(dú)立訪問(wèn)者數(shù)量seo如何優(yōu)化關(guān)鍵詞上首頁(yè)
  • 門戶網(wǎng)站開發(fā)需求分析網(wǎng)絡(luò)營(yíng)銷未來(lái)有哪些發(fā)展趨勢(shì)
  • wordpress怎么靜態(tài)頁(yè)面東莞搜索優(yōu)化十年樂(lè)云seo
  • wordpress最新的編輯器南寧網(wǎng)站優(yōu)化
  • 可以轉(zhuǎn)app的網(wǎng)站怎么做資深seo顧問(wèn)
  • 網(wǎng)站建設(shè)全套教程含前端和后端關(guān)鍵詞排名客服
  • ppt網(wǎng)站鏈接怎么做seo排名關(guān)鍵詞搜索結(jié)果
  • 成都市做網(wǎng)站的公司百度推廣app怎么收費(fèi)
  • 網(wǎng)站后綴百度影響力排名順序
  • 怎么創(chuàng)建私人網(wǎng)站微信推廣多少錢一次
  • 國(guó)外推廣網(wǎng)站國(guó)內(nèi)營(yíng)銷推廣渠道
  • 做蛋白go分析網(wǎng)站高端企業(yè)網(wǎng)站定制公司
  • 美橙表業(yè)手表網(wǎng)站2023年5月份病毒感染情況
  • 有域名 有主機(jī) 怎么建設(shè)網(wǎng)站獨(dú)立站seo外鏈平臺(tái)
  • 東莞seo建站優(yōu)化方法如何制作一個(gè)網(wǎng)頁(yè)鏈接
  • 江西做企業(yè)網(wǎng)站的公司無(wú)錫網(wǎng)絡(luò)推廣外包
  • 中山網(wǎng)站優(yōu)化關(guān)鍵詞排名優(yōu)化公司哪家強(qiáng)
  • dw做旅游網(wǎng)站模板下載網(wǎng)頁(yè)搜索排名提升
  • 網(wǎng)站備案 假通信地址seo深圳培訓(xùn)班
  • 新疆建設(shè)兵團(tuán)125團(tuán)網(wǎng)站什么是網(wǎng)站
  • 網(wǎng)站如何做原創(chuàng)文章什么是關(guān)鍵詞舉例說(shuō)明
  • 煙臺(tái)開發(fā)區(qū)網(wǎng)站制作公司快速優(yōu)化網(wǎng)站排名的方法
  • 東莞網(wǎng)站seo推廣優(yōu)化金蝶進(jìn)銷存免費(fèi)版
  • 郴州網(wǎng)站建設(shè)公司官網(wǎng)steam交易鏈接怎么改
  • 做網(wǎng)站首頁(yè)有什么網(wǎng)絡(luò)推廣網(wǎng)站的方法
  • 網(wǎng)站的發(fā)布與推廣怎么寫seo優(yōu)化包括
  • 營(yíng)業(yè)執(zhí)照申請(qǐng)網(wǎng)站互聯(lián)網(wǎng)營(yíng)銷的特點(diǎn)
  • 創(chuàng)意簡(jiǎn)約啤酒徽章logo設(shè)計(jì)頁(yè)面優(yōu)化的方法有哪些