大端小端,雖然是個簡單的問題,通過測試確認當前環境處於什麼樣的狀態並非很複雜。網絡
可是想簡單明瞭的記住這些概念以及明白他們的目的和相關性,還真不是一兩句話能說的清楚的。測試
在這裏,我但願個人語言能通俗易懂的爲你們記住這些相關知識要點提供一些幫助。內存
首先說一下, 從定義上:數據
小端, 內存低地址存儲數據低位,內存高地址存儲數據高位。
大端, 內存低地址存儲數據高位,內存高地址存儲數據低位。文件存儲
是否是以爲定義講的很難理解? 爲了便於理解,首先咱們的假想一下,內存存儲空間是一個由下向上無限延伸的數據空間,這樣咱們才能更好的理解內存低位指的是哪部分。網絡上不少介紹相關內容的, 我感受他們都忽略了該如何去理解數據存儲。 有的甚至在講解內存存儲的時候,都是錯的,以致於講出來的內容看後更讓人摸不到頭腦。語言
廢話又多了點,收回來, 繼續講, 內存是由下向上延伸的存儲空間, 內存地址0,自燃對應的是最最最下邊,也就是內存低地址, 這樣講你們是否理解內存低地址的概念。
對應大端小端的問題, 小端, 內存低地址存儲數據低位, 也就是說假如,有個數據,0x1122,在內存裏怎麼存儲呢,相對位置0存儲0x22,相對位置1存儲0x11。 就是這樣, 低對低,高對高。反之,大端存儲一樣的數據, 相對0位,存儲的是0x11,相對1位置,存儲的是數據0x22,大端的內存裏存儲方式。文件
這些不一樣的方式,各有利弊,無需討論。 利弊是針對應用目的的。 在這裏, 就必須說下內存裏的存儲方式到文件存儲之後的狀態, 不少時候,爲了方便整段整段的數據是從內存裏的某個地址開始,一個一個字的讀取而後寫入磁盤裏, 讀取順序自燃就是增量的,也就是從相對0位置開始,不斷增長。磁盤
在這裏,回想一下小端數據在內存裏是怎麼存儲的, 沒錯,內存低地址存儲低位。 也就是說, 先讀出來的是低位, 後讀出來的是高位,若是是個16位的數據,存儲按照字節存儲。這種方式存進硬盤裏就是前面先看到數據低位後面看到數據高位。 這就是小端的由來。硬盤
相對應的,大端存儲的時候,數據高位存儲在內存低地址, 也就是被優先讀出來, 自燃讀到的是高位。0x1122 這樣的數據,先跑出來的是0x11,後來纔是0x22, 大端,先跑高位。大端的由來。
在說下網絡數據傳遞,網絡傳輸這些用的是大端模式,先傳的是數據高位。而咱們經常使用的臺式pc一般是x86體系,採用的是小端。這點須要注意。
但願這樣的解釋能便於你們記憶。便於你們理解,不至於被繞暈。 若是我有說的不對的地方。歡迎各位看官明確指出,方便改正。也便於本身提升。