CPU的大小端及如果判斷

來源:互聯網
上載者:User

標籤:大數   實現   bsp   str   體繫結構   lsb   聯合體   nbsp   載入   

不同體繫結構的CPU,資料在記憶體中存放的排列順序是不一樣的。

儲存空間中對資料的儲存是以位元組(Byte)為基本單位的,因此,字(Word)和半字(Half-Word)在儲存空間中就有兩種次序,分別稱為:大端模式(Big Endian)和小端模式(Little Endian)。

大端儲存模式是指字或半字的最高位元組(Most Significant Bit,MSB)存放在記憶體的最低位位元組地址上,而字資料的低位元組則存放在高地址中。打個比方,有一個字為0×12345678,這個字由4個位元組組成, 從高位到低位的次序為:0×12,0×34,0×56,0×78。

大端模式的次序就像是我們平時書寫的次序,先寫大數,後寫小數。另外,大端儲存次序還廣泛運用在TCP/IP協議上,因此又稱為網路位元組次序。

小端儲存模式是指字或半字的最低位位元組(Lowest Significant Bit,LSB)存放在記憶體的最低位位元組地址上,而字資料的高位元組則存放在高地址中。

需要注意的幾點是:

(1)   資料在寄存器中都是以大端模式次序存放的。

(2)   對於記憶體中以小端模式存放的資料。CPU存取數成時,小端和大端之間的轉換是通過硬體實現的,沒有資料載入/儲存的開銷。

用一個聯合體判斷大小端:

int CheckEndian(void)
{
union check
{
int  Word;
char Half;

} Endian;

Endian.Word=1;

if(1 == Endian.Half)
return Little_Endian;
else
return Big_Endian;
}

CPU的大小端及如果判斷

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.