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

2021-09-11 14:21:10 字數 1020 閱讀 1825

title: 大端位元組序和小端位元組序

《格列佛遊記》中記載了兩個征戰的強國,你不會想到的是,他們打仗竟然和剝雞蛋的姿勢有關。

很多人認為,剝雞蛋時應該打破雞蛋較大的一端,這群人被稱作「大端(big endian)派」。可是當今皇帝的祖父小時候吃雞蛋的時候碰巧將乙個手指弄破了。所以,他的父親(當時的皇帝)就下令剝雞蛋必須打破雞蛋較小的一端,違令者重罰,由此產生了「小端(little endian)派」。這就是大端,小端的**。

計算機硬體有兩種儲存資料的方式:大端位元組序(big endian)和小端位元組序(little endian)。

大端法最高有效位元組在最前面的方式稱為大端法,例如假設變數x型別為int型,位於位址0x100的地方,其16進製制值為0x12345678,位址範圍為0x100到0x103位元組。

對於大端法的機器來說:

0x100

0x101

0x102

0x103

1234

5678

由上圖可見,位址從左向右增長,x的最高有效位元組12在最前面儲存。這正好和我們平時書寫習慣一致,先書寫最高有效位元組,再依次寫其餘位元組。

小端法最低有效位元組在最前面的方式成為小端法,這正好和大端法相反,仍然用大端法中舉的例子說明:

0x100

0x101

0x102

0x103

7856

3412

可能很多人不理解,為什麼要有大端和小端之分。

首先為什麼會有大端,因為大端符合我們人類的閱讀習慣,比如說我們習慣的從123456開始閱讀,而不是654321.

既然人類的閱讀習慣就是從大端開始,為什麼還要有小端呢?因為計算器的電路會優先處理低位位元組,採用小端效率比較高,因為計算都是從低位開始的。所以,計算機的內部處理都是小端位元組序。

只有讀取的時候,才必須區分位元組序,其他情況都不用考慮

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

簡單介紹 位元組序是由cpu和os對多位元組變數的記憶體儲存順序不同而產生的 小端位元組序 在表示變數的記憶體位址的起始位址存放低位元組,高位元組順序存放 大端位元組序 在表示變數的記憶體位址的起始位址存放高位元組,低位元組順序存放,例如 變數的值0xabcd uint32 t htonl 主機位元...

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

計算機硬體有兩種儲存資料的方式 大端位元組序 big endian 和小端位元組序 little endian 舉例來說,數值0x2211使用兩個位元組 一位元組是8bit 儲存 高位位元組是0x22,低位位元組是0x11。大端位元組序 低位位元組在高位址,高位位元組低位址上。這是人類讀寫數值的方法...

大端位元組序 小端位元組序

大端位元組序 大端儲存模式是指資料的低位元組內容儲存到記憶體的高位址中,而資料的高位元組內容儲存到記憶體的低位址中 小端位元組序 小端儲存模式是指資料的低位元組內容儲存到記憶體的低位址中,而資料的高位元組內容儲存到記憶體的高位址中 程式驗證 include int main return 0 程式改...