小端序與大端序:兩種常見的字節序
[編輯] [转简体] (简体译文)
|
作者:huidong
| 分類:【編程】C/C++
[
25 瀏覽
0 評論
4 贊
7 踩
]
概要
解釋數據在內存中的存儲順序問題,以及高字節與低字節的概念
正文
對於一個 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(內存高地址)
也就是一個字節的內部數據順序不變,但是四個字節的順序完全倒置。低字節數據更常被讀取和修改,小端序將低字節存儲在內存低位,更有利於計算機快速讀取低字節數據,提高運算效率。