大小端模式

2021-06-10 05:04:13 字數 1266 閱讀 7291

如下程式

記憶體位址分配中,0040102b位址上是01,四個為乙個int型,位址從左向右增加,因此0x01在低位址上,所以這個x86電腦是小端模式

說明不是大端,是小端

#include#includeint main()

; int *ptr1 = (int *)(&a+1);

int *ptr2 = (int *)((int)a+1);

int *ptr3 = (int *)((int)a+2);

printf("%x,%x,%x,%x,%x,%x\n",a,ptr1[-1],ptr2,*ptr2,ptr3,*ptr3);

return 0;

}

(int)a+1的值是元素a[0]的第2個位元組的位址,然後把這個位址強制轉換成int * 型別的值賦給ptr2,也就是*ptr2的值是a[0]第2個位元組開始的連續4個位元組的內容,這裡&a[0]的起始位址為0x0012ff6c

0000

0001

0012ff6c

0000

0002

0012ff70

0000

0003

0012ff74

所以(int)a+1的連續四個位元組的內容是02 00 00 00,輸出時省略第乙個0,所以為2000000

據此,(int)a+2的連續四個位元組的內容是00 02 00 00,輸出應為20000

大小端模式

偶 注意 大小端的高低位資料是按位址來計算的。如0x1001,10是高位位元組,01是低位位元組。char s abcd a是高位位元組 所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順...

大小端模式

所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...

大小端模式

端模式 endian 的這個詞出自jonathanswift書寫的 格列佛遊記 這本書根據將雞蛋敲開的方法不同將所有的人分為兩類,從圓頭開始將雞蛋敲開的人被歸為bigendian,從尖頭開始將雞蛋敲開的人被歸為littileendian。小人國的內戰就源於吃雞蛋時是究竟從大頭 big endian ...