如下程式
記憶體位址分配中,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 ...