深入理解計算機操作系統(2.1.3)

尋址和字節順序

對於誇多字節的程序對象,必須建立兩個規則:

  • 對象的地址是什麼
  • 內存中如何排列這些字節的

對象的地址:假設一個int變量佔四個字節,該變量的地址爲0x100,在C語言中地址表達式就是&x的值就是0x100,那麼在內存中該變量佔的地址就是0x100、0x101、0x102、0x103。總結就是誇多字節的對象的地址是該對象的所佔地址的起始地址。

字節排序:內存中的字節排序分爲兩種,一種是小端法,最低有效字節在最前面;一種是大端法,最高有效字節在最前面。
假設變量x的類型爲int,位於地址0x100處,十六進制爲0x01234567。地址範圍是0x100-0x103,分別用小端法和大端法表示:
這裏寫圖片描述

使用不同的機器字節順序可能不同,這樣會產生三個問題:

  • 小端法機器產生的數據發送到大端法或者反過來時,接受程序會發現,字裏的字節成了反序的。爲了避免這類問題,網絡應用程序的代碼編寫必須遵守已建立的關於字節順序的規則,以確保發送方機器將它的內部實現轉化成網絡標準,而接收方機器則將網絡標準轉爲內部表示。
  • 當閱讀表示整數數據的字節序列時,字節順序也很重要,因爲從當檢查機器級代碼時,如果機器的字節順序小端法表示的,那麼閱讀時就應該從右往左讀,這樣拿到的纔是正確的數據。
  • 第三種情況是當編寫規避正常類型的類型系統的程序是。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章