1. 程式人生 > >位元組序----大端序和小端序

位元組序----大端序和小端序


大端序 (big endian ):最高有效位元組儲存在最低低至,隨地址升高,位元組的權重降低。

小端序(little endian): 最低有效位元組儲存在最低地址,隨地址升高,位元組的權重升高。


比如說一個int型數字a為0x1234,那麼0x12代表a的高位,0x34代表a的低位(類似十進位制裡面百是高位,十是低位)

計算機的資料儲存是以位元組為單位的,因此0x12和0x34分別代表兩個位元組

假設記憶體地址從左到右是低位到高位

對於小端在記憶體中的儲存為: 3412(低地址儲存低位)

對於大端在記憶體中的儲存為:1234(低地址儲存高位)

對比發現大端的儲存跟書寫方式是一致的。


見下表:

位元組 0 1 2 3 型別
小端 0-7 8-15 16-23 24-32 int
大端 24-32 16-23 8-15 0-7 int


C測試程式碼:

#include <stdio.h>

union test
{
    int  a;
    char b;
}test;

int main(void)
{

    test.a = 1;

    if(1 == test.b)
    {
        printf("little endian!\n");
    }
    else
    {
        printf("big endian!\n");
    }

    return 0;
}
~   

巧妙運用聯合體共用同一記憶體來進行測試!