內(nèi)存的存儲(chǔ)及其存儲(chǔ)方式
1.內(nèi)存的存儲(chǔ):內(nèi)存是由低地址向高地址進(jìn)行存儲(chǔ)。(即我們個(gè)位數(shù)為低地址位,而百,千位為高地址數(shù))
為方便理解我們定義了一個(gè)變量a,如下

vs上方窗口欄:調(diào)試-->窗口-->內(nèi)存-->內(nèi)存1

在地址處輸入&a,取a的地址

內(nèi)存存儲(chǔ)總結(jié):我們可以看到數(shù)據(jù)是從左往右,即低地址往高地址走
2. 內(nèi)存存儲(chǔ)的方式:內(nèi)存存儲(chǔ)的兩種方式分別為大端存儲(chǔ)模式和小端存儲(chǔ)模式,其概念如下:
大端模式的定義:是指數(shù)據(jù)的低位保存在內(nèi)存的高地址中,而數(shù)據(jù)的高位,保存在數(shù)據(jù)的低地址中。
小端模式的定義:是指數(shù)據(jù)的低位保存在內(nèi)存的低地址中,而數(shù)據(jù)的高位,保存在數(shù)據(jù)的高地址中。
大小端存儲(chǔ)理解方式如下圖:

3.為什么會(huì)有大小端的區(qū)分
? 這是因?yàn)樵谟?jì)算機(jī)系統(tǒng)中,我們是以字節(jié)為單位的,每個(gè)地址單元都對(duì)應(yīng)著一個(gè)字節(jié),
一個(gè)字節(jié)為8bit。但是在C語(yǔ)言中除了8 bit的char之外,還有16 bit的short型,32bit的long型(要看具體的編譯器),另外,對(duì)于位數(shù)大于8位的處理器,例如16位或者32位的處理器,由于寄存器寬度大于一個(gè)字節(jié),那么必然存在著一個(gè)如何將多個(gè)字節(jié)安排
的問(wèn)題。因此就導(dǎo)致了大端存儲(chǔ)模式和小端存儲(chǔ)模式。
4.判斷存儲(chǔ)模式為大小端
可通過(guò)如下得知存儲(chǔ)模式為大端還是小端:
int main(){ ?int a=1; ?char*p=(char*)&a; ?if(*p==1){ ? ?printf("小端\n");
?} ?else{ ?printf("大端\n");
?} ?return 0;
}