位元組順序和位域順序的討論

2021-04-12 23:29:34 字數 542 閱讀 6985

大端和小端的討論,一般計算機組成原理教材都會有談到,

但多數不夠深入。

big endian:  高位位元組放到記憶體的低位位址,反之亦然。乙太網網路傳輸位元組序, powerpc, ultrasparc一類的處理器採用大端。

little endian: intel的ia-32架構採用。高位位元組放到記憶體高位位址。記得學x86結構是有一記憶口令:high high, low low

位元位順序一般和位元組序的端模式相同,但是這涉及硬體連線方式,一般軟體設計不需要管。

注意,c語言中的位域結構也要遵循端模式。

例如:

struct  edtest

該位域結構佔1個位元組,假設賦值 a = 0x01; b=0x02;

大端機器上該位元組為: (01)(000010)

小端機器上:                 (000010)(01)

因此在編寫可移植**時,需要加條件編譯。

主機位元組順序和網路位元組順序

不同的cpu有不同的位元組序型別 這些位元組序是指整數在記憶體中儲存的順序 這個叫做主機序 最常見的有兩種 1 little endian 將低序位元組儲存在起始位址 2 big endian 將高序位元組儲存在起始位址 le little endian 最符合人的思維的位元組序 位址低位儲存值的低...

定址和位元組順序

當我們遇到跨多位元組的程式物件時,這時候就需要判定清楚兩個問題,乙個是物件的位址,另外乙個是儲存器的位元組排列情況。位元組的排列不同的機器有著大端和小端之分,在不同型別的機器之間通過網路傳送二進位制資料時,接收程式字裡的位元組可能會出現反序排列,這時,網路應用程式的 必須得遵守一定的位元組順序規則。...

定址和位元組順序

以前學習微機原理的時候,對大端小端的理解感覺很模糊,反正也不怎麼使用到。現在在看另外一本講計算機作業系統的書的時候,發現要在儲存器中表示乙個多位元組的物件的時候,很自然就會考慮到多個位元組的排列順序問題。比如乙個int型別的變數,它占有4個位元組大小,假如說它的起始位址是0x100,那麼它就會只能用...