大端儲存和小端儲存 計算機儲存的大端法和小端法

2021-10-18 01:56:07 字數 1596 閱讀 5021

01引言

在計算機記憶體中,通常是以位元組(byte),也就是 8 個位(bit)為基本儲存單元(也有以 16 位為基本儲存單元的)。對於跨越多個位元組的資料型別(比如 int 長 4 個位元組),如何在記憶體中對這些位元組進行排序有兩種常見的方法:大端法(big-endian)和小端法(little-endian)

【注】首先不管是大端法還是小端法儲存,計算機在記憶體中存放資料的順序都是從低位址到高位址,所不同的是首先取低位元組的資料存放在低位址還是取高位元組資料存放在低位址。

比如說:0x12345 為了方便理解從左到右,位元組從高到底

02基本概念

高位放在低位址就是大端法

低位放在低位址就是小端法

例如0x0a0b0c0d的在大端和小端中的存放方式分別為:

程式驗證

#include
03注意

位元組序還是位序

大端法和小端法指的是位元組在記憶體中儲存時的排列規則,而不是資料中的位的排列規則。也有以位序排列的機器,但很少見。另外,再次明確一下,大端法或小端法是資料在儲存時的表現,而不是在暫存器中參與運算時的表現。

浮點數的位元組序

在所有機器上,浮點數在儲存時的位元組順序是和整數的位元組順序一樣的,所以在進行網路傳輸時,可以把浮點數當作整數進行位元組序轉換。但在歷史上,曾經有段時間因為 ieee 並沒有規定浮點數在網路上傳送的標準,所以浮點數都是以大端法進行儲存的。

04結語

大多數inter相容機只用小端法,android和ios也只用小端法;ibm和oracle的大多數機器用大端法,但它們的製造的個人電腦使用的是inter相容的處理器,因此使用小端法。

令人吃驚的是,對於哪種位元組順序更合適這個問題,人們表現的非常情緒化,從它的名字**就可看出

【「端」的起源】

術語「little endian(小端)」和「big endian(大端)」出自jonathan swift的《格列佛遊記》一書,其中兩個派別交戰的原因僅僅因為一方認為要從較大的一端敲開雞蛋,而另一方認為要從小的一端敲開雞蛋。

在作者的那個年代,swift是藉此諷刺英國和法國之間的持續衝突(難道命名者也是藉此諷刺大端法和小端法的矛盾,,,只是臆想,蒟蒻什麼也沒說)

大端儲存和小端儲存

簡述 計算機系統中,我們是以位元組為單位的,每個位址單元都對應著乙個位元組,乙個位元組為 8bit。但是在c語言中除了8bit的char之外,還有16bit的short型,32bit的long型另外,對於位數大於 8位的處理器,例如16位或者32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然存在...

計算機儲存的大端法和小端法

在計算機記憶體中,通常是以位元組 byte 也就是 8 個位 bit 為基本儲存單元 也有以 16 位為基本儲存單元的 對於跨越多個位元組的資料型別 比如 int 長 4 個位元組 如何在記憶體中對這些位元組進行排序有兩種常見的方法 大端法 big endian 和小端法 little endian...

大端和小端儲存

所謂小端儲存就是說資料是從記憶體的低位址開始儲存的!比如 定義乙個 int w 0xff 那麼這個值表示成32位的就是0x 00 00 00 ff 要是按照小端儲存的話則就是說是這樣的 記憶體位址 資料 0x0012ff60 ff 0x0012ff61 00 0x0012ff62 00 0x0012...