在32位小端的機器上,如下**輸出是什麼:
char array[12] = ;
short *pshort = (short *)array;
int *pint = (int *)array;
int64 *pint64 = (int64 *)array;
printf("0x%x , 0x%x , 0x%llx , 0x%llx", *pshort , *(pshort+2) , *pint64 , *(pint+2));
小端機器的資料高位位元組放在高位址,低位位元組放在低位址。x86結構為小端模式。
pshort占用2個位元組,在記憶體中的16進製為0x01 0x02,對應的16進製制數為0x0201。
pshort + 2指向array陣列的下標為4的元素,占用2個位元組,在記憶體中的16進製為0x05 0x06,對應的16進製制數為0x0605。
pint64的int64型別不確定,但根據名字可以看出占用8個位元組,對應的16進製制形式為0x807060504030201。
pint + 2占用4個位元組,指向的array陣列的下標為8的元素,8-11個元素沒有指定陣列的初始化值,預設為0,因此*(pint + 2)對應的16進製為0。
小端法 大端法
小端法little endian 諸如intel的機器就是採用這種規則 高位址存高位資料 大端法big endian 諸如ibm,motoral,sun採用此規則 低位址存高位資料 如需儲存oxeeaabbcc此數 如採用大端法儲存如下 address low high ee aa bb cc 如採...
大端法與小端法
一 什麼是位元組序 位元組序,顧名思義位元組的順序,再多說兩句就是大於乙個位元組型別的資料在記憶體中的存放順序 乙個位元組的資料當然就無需談順序的問題了 指的是記憶體的高 低位址,計算機在記憶體中存放資料的順序都是從低位址到高位址 高 低位元組 有些文章中稱低位位元組為最低有效位,高位位元組為最高有...
大端法和小端法
在計算機記憶體中,通常是以位元組 byte 也就是 8 個位 bit 為基本儲存單元 也有以 16 位為基本儲存單元的 對於跨越多個位元組的資料型別 比如 int 長 4 個位元組 如何在記憶體中對這些位元組進行排序有兩種常見的方法 大端法 big endian 和小端法 little endian...