大端模式和小端模式


1.為什么存在大小端模式

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

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             0d

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既可以工作在大端模式,也可以工作在小端模式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM