以前學習微機原理的時候,對大端小端的理解感覺很模糊,反正也不怎麼使用到。現在在看另外一本講計算機作業系統的書的時候,發現要在儲存器中表示乙個多位元組的物件的時候,很自然就會考慮到多個位元組的排列順序問題。
比如乙個int型別的變數,它占有4個位元組大小,假如說它的起始位址是0x100,那麼它就會只能用0x100,0x101,0x102,0x103這四個位址,然後我們假設這個二進位制數為10000000,11000000,00000011,00000001。乙個32位2進製數,每八個位組成一組。所以這四個組按怎樣的順序放到4個位址中,就構成了大端和小端的區分。
大端 小端
0x103 00000001 10000000
0x102 00000011 11000000
0x101 11000000 00000011
0x100 10000000 00000001
對大多數程式,機器的位元組順序是完全不可兼得。無論哪種型別的機器所編譯的程式都會得到相同的結果。問題之所在發生在不同型別的機器之間通過網路傳輸二進位制資料時。大端的機器傳送的資料在小端的機器接收之後,得到的就會是反序的。
定址和位元組順序
當我們遇到跨多位元組的程式物件時,這時候就需要判定清楚兩個問題,乙個是物件的位址,另外乙個是儲存器的位元組排列情況。位元組的排列不同的機器有著大端和小端之分,在不同型別的機器之間通過網路傳送二進位制資料時,接收程式字裡的位元組可能會出現反序排列,這時,網路應用程式的 必須得遵守一定的位元組順序規則。...
定址和位元組順序 所謂的大小端
某些機器在儲存器中按照從最低有效位元組到最高有效位元組的順序儲存物件,這種方式稱之為小端法 而有些機器按照從最高有效位元組到最低有效位元組進行儲存,這種方式稱之為大端法。例項,乙個int型的資料0x12345678,佔四個位元組,假設位址為0x2000 0x2003。位址0x2000 0x2001 ...
按位元組定址和按字定址
位元組 byte,b 由 8 個位 bit 組成,它是儲存空間的基本計量單位。字 由若干個位元組組成。乙個字等於多少個位元組,與系統硬體有關,不應該毫無前提地說乙個字等於多少個位元組。16位系統 1字 word 2位元組 byte 16 bit 32位系統 如 win32 1字 word 4位元組 ...