天天看點

小端模式與大端模式

        網上關于大小端模式的介紹已經非常多了,比如詳解大端模式和小端模式。雖然如此,我對于大小端的了解還是有問題。我糾結于為啥叫“小端”和“大端”,搞不清這個問題,始終會糊塗。現在就從這個方面入手。

       把資料0x87654321想象成一個物品,它是4個位元組,而且87是最高位,21是最低位。現在,要把它存在記憶體上。資料應該按照一定的順序記憶體存放,讀取時按照同樣(或相反,隻有這2個方向比較好)的順序進行,這樣資料就不會亂。記憶體是有位址的,按照從低位址到高位址進行編碼,比如位址編号從0到4,而且每個位址隻能放一個位元組的資料,是以資料0x87654321就得拆成4個部分進行存放。我們規定,從左向右的位址序号為從0到4(因為目前的閱讀習慣是從左到右,序号就從左向右依次變大,想一下坐标軸)。重點來了,資料可以這樣放置(0x87,0x65,0x43,0x21),叫做存法1;也可以這樣放置(0x21,0x43,0x65,0x87),叫做存法2。但是,存法的名稱還是容易讓人混亂,應該如何給這兩種存放方式命名呢?命名規則是什麼?我們以計算機讀取方向為規則,從左向右讀取(符合我們閱讀習慣),從低位址到高位址讀取(符合計算機掃描方向習慣)。對于存法1,由于先讀0x87,而0x87是資料高位,是“大”的資料,是以,我們就稱該方法為“大端模式”,特點是“高位資料放在低址地位置”;同理,對于存法2,由于先讀0x21,而0x21是資料低位,是“小”的資料,是以,我們就稱該方法為“小端模式”,特點是“低位資料放在低位址位置”。可以看到,“大端模式”中,人與計算機的方向一緻,更符合人的習慣。

繼續閱讀