對計算機大小端存儲的相關內容進行整理
在講C語言的時候,有講到大小端的內容,這里呢對大小端的相關內容進行了整理,有需要的可以參考一下!
大端和小端來自一個小故事:端模式(Endian)的這個詞出自Jonathan Swift書寫的《格列佛游記》。這本書根據將雞蛋敲開的方法不同將所有的人分為兩類,從圓頭開始將雞蛋敲開的人被歸為Big Endian,從尖頭開始將雞蛋敲開的人被歸為Littile Endian。小人國的內戰(zhàn)就源于吃雞蛋時是究竟從大頭(Big-Endian)敲開還是從小頭(Little-Endian)敲開。在計算機業(yè)Big Endian和Little Endian也幾乎引起一場戰(zhàn)爭。
在內存中,數據是以字節(jié)(8bit)存儲的,當存儲16bit的int或者32bit的long(與操作系統(tǒng)有關),就面臨著大端 (Big-Endian) 存儲還是小端 (Little-Endian) 存儲的問題。下面解釋一下大端存儲和小端存儲的概念。
大端存儲:高字節(jié)存儲在低地址中,即高位先存;
小端存儲:低字節(jié)存儲在高地址中,即低位先存。
其實這兩個概念不難理解,但是比較容易記混。由于大端序和小端序都是從存儲器的低地址開始向高地址存儲數據,不同的是一個字數據中先存高字節(jié)還是先存低字節(jié)??梢杂涀∵@樣一個口訣:“高大低小”。“高”是指高字節(jié),“大”是指大端序,“低”是指低字節(jié),“小”是指小端序,“高大低小”也即先存高字節(jié)為大端序,先存低字節(jié)為小端序。
位寬為32bit的CPU,要存儲的字數據為0x12345678,起始地址為0x4000。
一般地,Intel系列的CPU采用小端存儲,KEIL C51則為大端存儲。 同時,在網絡傳輸中,網絡協(xié)議需要指定網絡字節(jié)順序,TCP/IP協(xié)議中使用16位整數和32位整數的高位先存模式,對應我們的大端模式。
以上就是計算機中的大小端的存儲模式。