計算小端和大端的最低有效位

計算小端和大端的最低有效位

根據我的研究,Little Endian 將最低有效位元組儲存在最小的記憶體位址中,而 Big Endian 將最大有效位元組儲存在最小的記憶體位址中。

但是,我不明白如何計算和比較有效位元組。

例如,從這個地點,下圖展示了4個位元組,90,AB,12,CD是如何以Little Endian格式儲存在記憶體位址中的。

小尾數法

如何比較 4 個位元組中哪個位元組較大?我首先將所有值轉換為十六進制值,然後根據其十進制值進行比較,但它似乎無法以這種方式工作。

205 > 18,但CD儲存在最小的記憶體位址中..所以..我錯了。

任何澄清表示讚賞。

Treating CD as a hex value, with a decimal value of 205.
Treating 12 as a hex value, with a decimal value of 18.
Treating AB as a hex value, with a decimal value of 171.
Treating 90 as a hex value, with a decimal value of 144.

答案1

我認為您連結到的網頁包含非常令人困惑的字節順序描述!

字中各個位元組的實際值與它們在記憶體中的儲存位置無關,只與它們作為整個 4 位元組字的一部分的位置有關。

位元組序僅適用於多位元組字。在您的情況下,您有一個 4 位元組字,如下所示:

Decimal      Hex           Binary
2427130573   90 AB 12 CD   10010000 10101011 00010010 11001101

這是大端表示法,其中最高有效位元組 ( 0x90) 首先儲存在記憶體中,或儲存在最低記憶體位址中。

在小端表示中,位元組在記憶體中簡單地反轉,如下所示:

Decimal      Hex           Binary
2427130573   CD 12 AB 90   11001101 00010010 10101011 10010000

現在,最低有效位元組 ( 0xCD) 首先儲存在記憶體中,或儲存在最低記憶體位址中。

您會看到,所涉及位元組的實際值並不能確定它們在記憶體中的位置,只能確定它們在整個字中的位置。

字節序的概念可以追溯到 CPU 架構,正如您連結到的文章中所描述的那樣,這兩種方法都有優點和缺點。

人類思考數字最自然的方式是使用大端字節序,因為這就是我們對待十進制數字的方式。在您的情況下,十進制數字2427130573可以說是用大端表示法編寫的,即2首先寫入最有效的數字(),並且隨著向右移動,重要性逐漸減小(即,更改最左邊數字的值對數字的值)。這個數字同樣可以從左到右書寫,就像3750317242從最低有效數字開始一樣,只要您知道如何讀取它(編輯:順便說一句,這就是為什麼unicode 檔案應該在前2 個位元組中儲存一個位元組順序標記(BOM)檔案的字節,以便作業系統知道如何解釋該檔案。

然而,對於電腦執行計算來說,首先儲存最低有效位元組通常是最有效的。我認為大字節序與小字節序的爭論是另一個討論的主題,並且網上有很多來源!

我希望這有助於澄清一些!

相關內容