大端模式和小端模式

1.爲何存在大小端模式

計算機系統中,每一個地址單元對應一個字節(8bit),一種數據類型的數據可能佔用若干字節。如何安排這種數據類型中的各個字節,哪一個字節在低地址哪一個在高地址,以及一個字節中的各個比特的排列,這就牽涉到大小端模式。也就是你們常說的字節序和比特序問題。字節序和比特序通常是一致的,要麼都是大端,要麼都是小端。java

2.什麼是大端和小端

大端模式:低位(字節/比特)放在高地址中,高位(字節/比特)放在低地址中。
小端模式:低位(字節/比特)放在低地址中,高位(字節/比特)放在高地址中。
高位和地位是對於咱們正常閱讀和書寫來講,最開始是高位,例如int型數0x1234,0x12是字節的高位,0x34是字節的低位。
根據以上規則,咱們給出在大、小端序系統中整數0x0a0b0c0d的表示方式。
對於大端系統:
byte addr        0                     1                 2                3
bit offset  01234567 01234567 01234567 01234567
    binary  00001010 00001011 00001100 00001101
        hex          0a                   0b              0c              0d
對於小端系統:
byte addr          3                  2                1                 0
bit offset  76543210 76543210 76543210 76543210
    binary  00001010 00001011 00001100 00001101
        hex            0a               0b              0c             0dspa

3. 檢測大小端

聯合體的存放順序是全部成員都從低地址開始存放,利用該特性能夠輕鬆得到當前系統採用大端仍是小端模式操作系統

BOOL IsBigEndian()    
{    
    union NUM    
    {    
        int a;    
        char b;    
    }num;    
    num.a = 0x1234;    
    if( num.b == 0x12 )    
    {    
        return TRUE;    
    }    
    return FALSE;    
}  

4.常見的大小端

通常操做系統都是小端模式;而通信協議是大端模式;java和平臺無關,默認是大端模式
常見的cpu的大小端:
大端:PowerPC、IBM、Sun
小端:x86
ARM既能夠工做在大端模式,也能夠工做在小端模式code

相關文章
相關標籤/搜索