大端和小端是乙個比較麻煩的東西,因為這兩個東西比較容易弄混,乙個是資料尾端存在高位址處,乙個是資料尾端存在低位址處。
看了一篇的文章(發現用裘宗燕翻譯的《程式設計實踐》裡的語句來解釋比較有助於記憶和區分大端和小端,
那本書裡是
把大端叫做高尾端,
把小端叫做低尾端,
這表示大端是把字串的尾端資料存在記憶體高位址處;
小端是把字串的尾端資料存在記憶體的低位址處。
如圖所示,雖然計算機儲存和讀取記憶體資料時都是從低位址開始的,但字串「11223344」在不同模式下儲存的形式是不同的。
下文附了乙個用於測試系統大小端的程式:
#include
#include
int main()
un;un.s = 0x0102;
if(2==sizeof(short))
else
printf("sizeof(short)=$d\n",sizeof(short));
return 0;
記憶體位址 大端小端問題
乙個記憶體位址可儲存 8 bit 1 byte 位元組 32位作業系統可定址空間為 2 32 byte 2 10 2 10 2 10 4 4 gb c宣告位元組數 位元組數有符號 32位64位 char11 short22 int4 4long48 char 48 float44 double88 ...
大端與小端
網際網路使用網路位元組順序採用大端模式進行編址,大端儲存也稱為網路位元組序,因為tcp ip包在網路中傳輸時都要求以這種次序,以其他形式儲存資料的機器 主機位元組順序根據處理器的不同而不同,如powerpc處理器,使用大端模式,而pentuim處理器使用小端模式 則必須在傳送資料之前把首部轉換成網路...
大端與小端
端模式 endian 的這個詞出自 jonathan swift 書寫的 格列佛遊記 這本書根據將雞蛋敲開的方法不同將所有的人分為兩類,從圓頭開始將雞蛋敲開的人被歸為 big endian 從尖頭開始將雞蛋敲開的人被歸為 littile endian 小人國的內戰就源於吃雞蛋時是究竟從大頭 big ...