大小端的原理 對於一個由2個位元組組成的16位整數,在記憶體中存儲這兩個位元組有兩種方法:一種是將低序位元組存儲在起始地址,這稱為小端位元組序;另一種方法是將高序位元組存儲在起始地址,這稱為大端位元組序。即 大端是高位元組存放到記憶體的低地址 小端是高位元組存放到記憶體的高地址 假如現有一32位int型數0x123456 ...
大小端的原理
對於一個由2個位元組組成的16位整數,在記憶體中存儲這兩個位元組有兩種方法:一種是將低序位元組存儲在起始地址,這稱為小端位元組序;另一種方法是將高序位元組存儲在起始地址,這稱為大端位元組序。即
大端是高位元組存放到記憶體的低地址
小端是高位元組存放到記憶體的高地址
假如現有一32位int型數0x12345678,那麼其MSB(Most Significant Byte,最高有效位元組)為0x12,其LSB (Least Significant Byte,最低有效位元組)為0x78。
大小端的應用場景
-
大小端是由硬體決定的,小端主要是x86處理器,大端主要是PowerPC;
-
大小端是一種位元組存儲機制;
-
大端是最重要的位元組存儲在低地址;
-
小端是最重要的位元組存儲在高地址。
大小端的確定
1、共用體確定
union myunion{
int a;
char b;};
union myunion s1; s1.a=0x10000000;
if(s1.b==0x10) puts("大端模式"); if(s1.b==0x00) puts("小端模式");
2、指針確定
int a; a=0x10000001; char b=((char)(&a)); if(b==0x10) puts("大端模式"); else if(b==0x01) puts("小端模式");