對於位數大於
8位的處理器,例如
16位或者
32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然存在著乙個如果將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。
例如乙個
16bit
的short型x
,在記憶體中的位址為
0x0010,x
的值為0x1122
,那麼0x11
為高位元組,
0x22
為低位元組。
對於大端模式,就將
0x11
放在低位址中,即
0x0010
中,0x22
放在高位址中,即
0x0011
中。小端模式,剛好相反。
我們常用的
x86結構以及很多的
arm,
dsp都為小端模式。
而keil c51和ppc8377
則為大端模式。
位元組反序的例子
unsigned char can_swap8(unsigned char data)
data>>=1;
temp<<=1;
} if (data&0x01)
printf("after data:%#x\n", temp);
return temp;
}
大小端問題
大小端問題 跨位元組位域大小端轉換例項講解 注 結構體整體當做u16 u32來賦值時才會產生這種問題,如果是按位元組或者移位方式訪問則沒有問題 typedef struct s bit sample 測試程式 vos void bigendiandomainfiledtest vos void 1 ...
大小端問題
大小端問題 最近工作中,有兩次遇到大小端問題,所以花時間寫這篇日誌,總結一下。1.實際需求 1 前段時間寫了乙個修復損壞的gzip檔案的tool,在linux server上編譯執行沒有問題。但是在solaris server上運編譯執行,結果總是和預期的不一致,跟蹤發現是由大小端問題導致的 2 最...
大小端問題
什麼是大小端 大小端表示資料在儲存器中的存放順序 1 小端模式 資料的高位元組儲存在記憶體的高位址中,而低位元組儲存在記憶體的低位址中。這種儲存模式將位址的高低和資料位權有效的結合起來,高位址部分權值高,低位址部分權值低,和我們平常的邏輯方法一致。2 大端模式 資料的高位元組儲存在記憶體的低位址中,...