一般一個16位(雙位元組)的數據,比如 FF1A (16進位)那麼高位位元組就是FF,低位是1A如果是32位的數據,比如 3F68415B高位字(不是位元組)是3F68低位字是415B右邊是低位位,左邊是高位////////////////////////////////網摘C語言中的高位位元組和低位位元組是 ...
一般一個16位(雙位元組)的數據,比如 FF1A (16進位)
那麼高位位元組就是FF,低位是1A
如果是32位的數據,比如 3F68415B
高位字(不是位元組)是3F68
低位字是415B
右邊是低位位,左邊是高位
////////////////////////////////網摘
C語言中的高位位元組和低位位元組是什麼意思? ////////
通常我們從最高有效位(most significant digit)開始自左向右書寫一個數字。在理解有效位這個概念時,可以想象一下你的支票數額的第一位增加1和最後一位增加1之間的巨大區別,前者肯定會讓你喜出望外。
電腦記憶體中一個位元組的位相當於二進位數的位,這意味著最低有效位表示1,倒數第二個有效位表示2×1或2,倒數第三個有效位表示2×2×1或4,依此類推。如果用記憶體中的兩個位元組表示一個16位的數,那麼其中的一個位元組將存放最低的8位有效位,而另一個位元組將存放最高的8位有效位,見圖10.5。存放最低的8位有效位的位元組被稱為最低有效位位元組或低位位元組,而存放最高的8位有效位的位元組被稱為最高有效位位元組或高位位元組。
高位位元組 低位位元組
↓--------------------------↓ ↓---------------------------↓
15 14 13 12 11 10 9. 8. 7. 6. 5. 4. 3. 2. 1. 0.
/////////////////////////////
16位和32位的數是怎樣存儲
一個16位的數占兩個位元組的存儲空間,即高位位元組和低位位元組(見10.5中的介紹)。如果你是在紙上書寫一個16位的數,你總是會把高位位元組寫在前面,而把低位位元組寫在後面。然而,當這個數被存儲到記憶體中時,並沒有固定的存儲順序。
如果我們用M和L分別表示高位位元組和低位位元組,那麼可以有兩種方式把這兩個位元組存儲到記憶體中,即M在前L在後或者L在前M在後。把M存儲在前的順序被稱為“正向(f orward)”或“高位優先(big—endian)”順序;把L存儲在前的順序被稱為“逆向(reverse)”或“低位優先(little—endian)”順序。
big—endian這個術語的含義是數的“高位(big end)”存儲在前,同時這也是對《Gulliver'sTravels》這本書中的一個詞的引用,在該書中big—endian一詞是指那些從大頭開始吃一個煮雞蛋的人。
大多數電腦按正向順序存儲一個數,Intel CPU按逆向順序存儲一個數,因此,如果試圖將基於Intel CPU的電腦連到其它類型的電腦上,就可能會引起混亂。
一個32位的數占4個位元組的存儲空間,如果我們按有效位從高到低的順序,分別用Mm,Ml,Lm和Ll表示這4個位元組,那麼可以有4!(4的階乘,即24)種方式來存儲這些位元組。在過去的這些年中,人們在設計電腦時,幾乎用遍了這24種方式。然而,時至今天,只有兩種方式是最流行的,一種是(Mm,MI,Lm,LD,也就是高位優先順序,另一種是(Ll,Lm,Ml,Mm),也就是低位優先順序。和存儲16位的數一樣,大多數電腦按高位優先順序存儲32位的數,但基於Intel CPU的電腦按低位優先順序存儲32位的數