大端模式和小端模式


1. 爲何會產生兩種模式:
        在計算機中咱們是以字節爲單位的,每個地址單元都對應着一個字節,一個字節就是8位,c語言中char類型以外,還
 有四個字節的int,個字節的longlong類型,而且除了對於超過8位的處理器,好比32位處理器,64位處理器,因爲寄存器的寬
 度、大於一個字節就必然存在着字節安排的問題,所以就出現了大端模式和小端模式
網絡

2.兩種模式的定義:
        在計算機的結構體系中,對於字節,字等的存儲機制有所不一樣,,目前在各個體系的計算機中一般採用的字節存儲機制
 主要有兩種:大端模式和小端模式,大端模式:就是將高位的數據(權重較高的數據)存放在地址上,小端模式:就是
 將低位的數據(權重較低的數據)存放在低位的地址上,採用大端模式存取數據比較符合人的思惟,可是採用小端模式
 存放數據更有利於計算機處理,因此到目前爲止,誰好誰壞尚未定論。
 例子:測試

        若是定義一個整型(int)的變量:int a=0x12345678,這個整型變量在內存中的存儲在大小端的不一樣的模式下存儲狀況
        大端模式的存儲由下圖所示:spa

         小端模式的存儲以下圖所示:操作系統

注意:這裏說明一點,存儲是以字節爲單位的,因此一個字節內的數據是不用遵循大端模式和小端模式的,就像小端模式中是0x78,而3d

不是0X87 
3.大端和小端的應用:
       談到字節排序問題就一定會牽扯到兩大cpu的派系,那就是motorola的powerPC系列的CPU和intel的X86系列,powerPC系列
 的CPU採用的是大端模式,intel的X86系列採用的是小端模式
       大端模式:網絡,大多通訊協議是大端的,powerPC,IBM,Sun
       小端模式:主機,通常操做系統是小端的,X86,DEC
        ARM既能夠工做在大端模式也能夠工做在小端模式
4. 測試本地設備採用的是大端模式仍是小端模式:指針

  第一種方法:定義一個大於一個字節的數據類型的變量假設爲變量爲a,用小於變量a的數據類型的指針進行強制轉化
 將變量地址進行截斷,而後再用*間接訪問該地址中所存的數據,看看是高位數據仍是低位數據,就能夠得出結果了,
 代碼以下圖所示:code

 

#include <stdio.h>
bool isbigendian ()
{
    int a=0x12345678;
    char b=(*(char*)&a);
    if (b=0x1)
    {
        return true;
    }
    return false; 
}
int main ()
{
    if(isbigendian ())
    {
        printf ("該設備下是大端模式\n");
    }
    else
    {
        printf ("該設備下是小端模式\n");
    }
    return 0;
}

 

 

 

  第二種方法:運用聯合體的特性:聯合體union在任何同一時刻聯合體都只存放一個被選中的成員,而且全部全部成員都是
 從低地址開始存放,;利用這一特性,咱們能夠定義一個聯合體,先定義一個字節數大於1變量例如int a;在定義一個字
 節數小於變量a的變量,而後將變量a進行賦值,而後訪問變量b,若是是高位上的數字就是大端模式,若是是低位上的數
 字就是小端模式,代碼以下圖所示:blog

#include <stdio.h>
bool isbigendian1 ()
{
     union sun
    {
        short a;
        char b;
    }sun;
    sun.a=0x1234;
    if (sun.b=0x12)
    {
        return true;
    }
    else
    {
        return false ;
    }
}
int main ()
{
    if (isbigendian1 ())
    {
        printf ("該設備是使用的是大端模式\n");
    }
    else
    {
        printf ("該設備使用的是小端模式\n");
    }
    return 0;
}

 
5.通訊:
      網絡上傳輸數據廣泛採用的是大端模式,powerPC處理器主導網絡市場,能夠絕大多數的通訊設備都使用的是powerPC處
 理器這也可能就是網絡上絕大多數的協議採用的是大端模式的緣由,所以,在使用小端模式處理器須要使用網絡通訊時
 須要在軟件中處理端模式的轉變排序

相關文章
相關標籤/搜索