您好,登錄后才能下訂單哦!
簡(jiǎn)單來講所謂的大端存儲(chǔ)就是將高字節(jié)序的內(nèi)容存在低地址處,那么,小端存儲(chǔ)就是將低字節(jié)序的內(nèi)容存在高地址處。 (圖片做以解釋)
在計(jì)算機(jī)中,數(shù)據(jù)的是以其二進(jìn)制補(bǔ)碼的形式存儲(chǔ)于計(jì)算機(jī)中的,上邊又提到了大端存儲(chǔ)和小段存儲(chǔ),但是,每臺(tái)計(jì)算機(jī)的存儲(chǔ)方式又是不一樣 的,那么,怎么判斷一臺(tái)計(jì)算機(jī)是打斷存儲(chǔ)還是小段存儲(chǔ)呢?!
下面就來分裝一個(gè)函數(shù)來實(shí)現(xiàn)此功能:
我們知道 1 在計(jì)算機(jī)中存儲(chǔ)的是00000000 00000000 00000000 00000001(補(bǔ)碼),其十六進(jìn)制表示為FF FF FF FF,如果取其地址,
計(jì)算機(jī)就有可能顯示的是:01 00 00 00; ———————— 小端存儲(chǔ)
或者:00 00 00 01; ———————— 大端存儲(chǔ)
因此,當(dāng)我們只要知道這個(gè)數(shù)據(jù)存儲(chǔ)以后第一位是否為1就可以來判斷這臺(tái)計(jì)算機(jī)的存儲(chǔ)方式是大端存儲(chǔ)或者小段存儲(chǔ)(當(dāng)然,這里的數(shù)字可以隨便給,但是為了方便起見就選1)
int sys_check() { int num = 1; char *p = (char *)# if(*p == 1) return 1; //小端存儲(chǔ) else return 0; //大端存儲(chǔ) } int main() { int num = 1; int ret = sys_check(); if(ret == 1) { printf("little\n"); } else if(ret == 0) { printf("big\n"); } system("pause"); return 0; }
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。