小編給大家分享一下大端模式和小端模式有哪些區別,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創新互聯專注于興山網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供興山營銷型網站建設,興山網站制作、興山網頁設計、興山網站官網定制、成都小程序開發服務,打造興山網絡公司原創品牌,更為您提供興山網站排名全網營銷落地服務。區別:大端模式中字數據的高字節存儲在低地址中,而字數據的低字節則存放在高地址中;而與大端存儲模式相反,在小端存儲模式中,低地址中存放的是字數據的低字節,高地址存放的是字數據的高字節。
大端模式和小端模式的區別
在C語言中除了8位的char型之外,還有16位的short型,32位的long型(要看具體的編譯器),對于位數大于8位的處理器,例如16位或者32位的處理器,由于寄存器寬度大于一個字節,那么必然存在著如何將多個字節安排的問題。因此就導致了大端存儲模式和小端存儲模式。
大端模式:
字數據的高字節存儲在低地址中,而字數據的低字節則存放在高地址中。
小端模式:
與大端存儲模式相反,在小端存儲模式中,低地址中存放的是字數據的低字節,高地址存放的是字數據的高字節。
例如,16位寬的數0x1234在小端模式CPU內存中的存放方式(假設從地址0x4000開始存放)為:
內存地址 | 0x4000 | 0x4001 |
存放內容 | 0x34 | 0x12 |
而在大端模式CPU內存中的存放方式則為:
內存地址 | 0x4000 | 0x4001 |
存放內容 | 0x12 | 0x34 |
而在大端模式CPU內存中的存放方式則為:
內存地址 | 0x4000 | 0x4001 | 0x4002 | 0x4003 |
存放內容 | 0x12 | 0x34 | 0x56 | 0x78 |
我們常用的X86結構是小端模式,而KEIL C51則為大端模式。很多的ARM,DSP都為小端模式。有些ARM處理器還可以由硬件來選擇是大端模式還是小端模式。
Note:采用大端方式進行數據存放符合人類的正常思維,而采用小端方式進行數據存放利于計算機處理。
(我的理解:小端模式在低字節就放一個低位)
下面這段代碼可以用來測試一下你的編譯器是大端模式還是小端模式:
int main() { short int x; char x0,x1; x=0x1122; x0=*((char*)&x); //低地址單元 ,或者((char*)&x)[0]; x1=*((char*)&x + 1); //高地址單元,或者((char*)&x)[1]; printf("x0=%x\nx1=%x\n",x0,x1); }
若x0=0x11,則是大端; 若x0=0x22,則是小端.....
以上是“大端模式和小端模式有哪些區別”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!
當前題目:大端模式和小端模式有哪些區別-創新互聯
轉載源于:http://vcdvsql.cn/article28/dsdscp.html
成都網站建設公司_創新互聯,為您提供用戶體驗、網站改版、全網營銷推廣、網站導航、移動網站建設、網站內鏈
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯