cpu:大小端模式的區別:
大端模式(big-endian),是指資料的低位(就是權值較小的後面那幾位)儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理:位址由小向大增加,而資料從高位往低位放;
小端模式(little-endian),是指資料的低位儲存在記憶體的低位址中,而資料的高位儲存在記憶體的高位址中,這種儲存模式將位址的高低和資料位權有效地結合起來,高位址部分權值高,低位址部分權值低,和我們的邏輯方法一致。
記憶體位址高地的理解:
我們對記憶體表的高位和低位的理解,就可以想做這裡就是一張白紙. 我們把每個空格都當作乙個位置,從0~1000開始計數,寫在最前的就是低位,
比如說寫四個數,從0~3 . game資料的低位~高位就是從g到m.
暫存器高位低位的理解:
之後呢,我們從記憶體表中區資料,放入暫存器中,我們可以把暫存器比做乙個水桶,我們放入資料的時候肯定是把"水"先倒到水筒的底部.
如我們從記憶體中區game放入到水桶中的話 水桶中存放的資料就成了emag 也就是 45 4d 41 47 (注意每個位元組是兩個16進製制的字元)
而水桶的高位和地位呢,想必大家會很明白,水桶的最上方就是高位,水桶底就是低位,所以emag 資料的高低位就是 e~g(e為最高位 g為最低位)
嵌入式系統開發者應該對little-endian和big-endian模式非常了解。
我們常用的x86結構是小端模 式,而keil c51則為大端模式。很多的arm,dsp都為小端模式
可以用下面的程式測試:
int checksystem( )
c;c.i = 1;
return (c.ch ==1);
}如果當前系統為大端模式這個函式返回 0;如果為小端模式,函式返回 1。
記憶體位址 大端小端問題
乙個記憶體位址可儲存 8 bit 1 byte 位元組 32位作業系統可定址空間為 2 32 byte 2 10 2 10 2 10 4 4 gb c宣告位元組數 位元組數有符號 32位64位 char11 short22 int4 4long48 char 48 float44 double88 ...
大小端模式和直接向記憶體賦值
一 大小端模式 大端模式 資料的低位儲存於記憶體的高位位址,資料的高位儲存於記憶體的低位位址。小端模式 資料的低位儲存於記憶體的地位位址,資料的高位儲存於記憶體的高位位址。在32位處理器中,儲存int型資料需要4個位元組。資料0x12345678 大端模式和小端模式儲存示意圖如下。需要注意的是 無論...
資料在記憶體中的大小端模式儲存
大端模式 資料的高位元組儲存在記憶體的低位址中,而資料的低位元組儲存在記憶體的高位址中。因為在計算機系統中,我們是以位元組為單位的,每個位址單元都對應著乙個位元組,乙個位元組為 8bit。但是在c語言中除了8bit的char之外,還有16bit的short型,32bit的long型 要看具體的編譯器...