資料儲存 大小端問題介紹

2021-09-24 10:34:01 字數 723 閱讀 5800

在實際軟體除錯時,會做資料型別的轉換,比如強制型別轉換,將int ---> short , unsigned --> signed ,以及不同的平台做開發時,

比如linux ,window, arm,不同平台的資料儲存機制是不一樣的。

關於大小端的基本概念如下:

舉個例子,從記憶體位址0x0000開始有以下資料

0x0000    0x12

0x0001    0x34

0x0002    0xab

0x0003    0xcd

如果我們去讀取乙個位址為0x0000的四個位元組變數:

若位元組序為big-endian,  則讀出結果為0x1234abcd;

若位元組序位little-endian,則讀出結果為0xcdab3412;

如果我們將0x1234abcd寫入到以0x0000開始的記憶體中,則結果為:

big-endian      little-endian

0x0000          0x12                  0xcd

0x0001          0x23                  0xab

0x0002          0xab                  0x34

0x0003          0xcd                  0x12

intelx86系列以及arm系列cpu都是little-endian的位元組序.

記憶體儲存大小端介紹

為什麼會有大小端模式之分呢?這是因為在計算機系統中,我們是以位元組為單位的,每個位址單元對應著乙個位元組,乙個位元組8bit 但是在c語言中除了8bit的char之外,還有16bit的short型,32bit的long型 要看具體的編譯器 另外,對於位數大於8位的處理器,例如16位或者32位的處理器...

儲存大小端問題

所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...

大小端儲存問題

所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...