大端和小端來自乙個小故事:端模式(endian)的這個詞出自jonathan swift書寫的《格列佛遊記》。這本書根據將雞蛋敲開的方法不同將所有的人分為兩類,從圓頭開始將雞蛋敲開的人被歸為big endian,從尖頭開始將雞蛋敲開的人被歸為littile endian。小人國的內戰就源於吃雞蛋時是究竟從大頭(big-endian)敲開還是從小頭(little-endian)敲開。在計算機業big endian和little endian也幾乎引起一場戰爭。
在記憶體中,資料是以位元組(8bit)儲存的,當儲存16bit的int或者32bit的long(與作業系統有關),就面臨著大端 (big-endian) 儲存還是小端 (little-endian) 儲存的問題。下面解釋一下大端儲存和小端儲存的概念。
其實這兩個概念不難理解,但是比較容易記混。由於大端序和小端序都是從儲存器的低位址開始向高位址儲存資料,不同的是乙個字資料中先存高位元組還是先存低位元組。可以記住這樣乙個口訣:「高大低小」。「高」是指高位元組,「大」是指大端序,「低」是指低位元組,「小」是指小端序,「高大低小」也即先存高位元組為大端序,先存低位元組為小端序。
舉個例子說明這個問題:
位寬為32bit的cpu,要儲存的字資料為0x12345678,起始位址為0x4000。
大端儲存如下:
小端儲存如下:
一般地,intel系列的cpu採用小端儲存,keil c51則為大端儲存。 同時,在網路傳輸中,網路協議需要指定網路位元組順序,tcp/ip協議中使用16位整數和32位整數的高位先存模式,對應我們的大端模式。
以上就是計算機中的大小端的儲存模式。
文章選自華清遠見嵌入式培訓
>>>更多優秀技術博文每日更新
計算機儲存 大小端
大端模式,big endian,是指高位元組在前,低位元組在後的排布方式 具體來講,在儲存中高位元組在低位址,低位元組在高位址 在通訊中,高位元組先傳輸,低位元組後傳輸 小端模式,little endian,是指低位元組在前,高位元組在後的排布方式 具體來講,在儲存中低位元組在低位址,高位元組在高位...
負數在計算機中的儲存
問乙個基本的問題。負數在計算機中如何表示?舉例來說,8在計算機中表示為二進位制的1000,那麼 8怎麼表示呢?很容易想到,可以將乙個二進位制位 bit 專門規定為符號位,它等於0時就表示正數,等於1時就表示負數。比如,在8位機中,規定每個位元組的最高位為符號位。那麼,8就是00001000,而 8則...
計算機中資料的儲存形式
在計算機中如何表示?8在計算機中表示為二進位制的1000,那麼 8怎麼表示呢?很容易想到,可以將乙個二進位制位 bit 專門規定為符號位,它等於0時就表示正數,等於1時就表示負數。比如,在8位機中,規定每個位元組的最高位為符號位。那麼,8就是00001000,而 8則是10001000。但是,隨便找...