匯東網


小端序與大端序:兩種常見的字節序

[編輯] [转简体]
|
作者:huidong | 分類:【編程】C/C++
[ 43 瀏覽 0 評論 10 贊 18 踩 ]

概要
解釋數據在內存中的存儲順序問題,以及高字節與低字節的概念

正文

對於一個 32 位 unsigned int ,給定它的二進制值爲 11110000 00000000 00000000 00000001,那麼它的高字節就是 1111000,低字節就是  00000001。然而這個數據存儲在內存中的方式取決於操作系統的字節序,常見的字節序有以下兩種:

  • 大端序(Big-endian):在這種字節序中,最高有效字節(MSB)存儲在最低的內存地址上,而最低有效字節(LSB)存儲在最高的內存地址上。

  • 小端序(Little-endian):在這種字節序中,最低有效字節(LSB)存儲在最低的內存地址上,而最高有效字節(MSB)存儲在最高的內存地址上。

用大端序存儲上面的示例數據,那麼在內存中就是:

(內存低地址)11110000 00000000 00000000 00000001(內存高地址)

用小端序就是:

(內存低地址)00000001 00000000 00000000 11110000(內存高地址)

也就是一個字節的內部數據順序不變,但是四個字節的順序完全倒置。低字節數據更常被讀取和修改,小端序將低字節存儲在內存低位,更有利於計算機快速讀取低字節數據,提高運算效率。

[ 10] [ 18]


 評論區  0 條評論

+ 添加評論