C語言學(xué)習(xí)(2)大端存儲和小端存儲
?/********************************************************************************************************
? ? ? ? ? ? ? ? ? ? ?剛開始學(xué)習(xí)C語言,僅代表自己的學(xué)習(xí)理解,不代表觀點一定正確
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 只做學(xué)習(xí)記錄
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?有錯誤的麻煩指出,謝謝!
*********************************************************************************************************/
系統(tǒng)存儲數(shù)據(jù)的方式有兩種:大端存儲(Big-endian)和小端存儲(Little-endian)
大端存儲:高字節(jié)的數(shù)據(jù)存儲在低地址
小端存儲:低字節(jié)的數(shù)據(jù)存儲在低地址
網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)統(tǒng)一采用大端存儲(htons htonl ntohs nothl)
———————————————————————————————————————
?
什么是大端/小端存儲:
假設(shè)現(xiàn)在采用的系統(tǒng)是32位系統(tǒng),則地址的總線是32位,內(nèi)存地址是4個字節(jié)
?
如果地址分配為:
0x00000000 ?0x00000001 ?0x00000010 ?0x00000011
則相對應(yīng)的(大端)數(shù)據(jù)為
低位 ????????中位 ???????高位 ??????最高位
反之(小端)數(shù)據(jù)為
?最高位 ???????高位 ???????中位 ???????低位
———————————————————————————————————————
?
例:

輸出的結(jié)果可能是0x12或者0x78,取決于當(dāng)前的系統(tǒng)環(huán)境(儲存數(shù)據(jù)的方式)
?
設(shè)計一個程序、判斷機器是大端存儲還是小端存儲
