深入理解計算機系統—第二章——隨筆

 字節作爲最小的可尋址的單位,而不是位bit。機器級程序將存儲器看做一個非常大的數組,成爲虛擬存儲器。存儲器的每個字節都由一個唯一的數字來標識,稱爲它的地址,所有可能的地址的集合就叫虛擬地址空間virtual address space。虛擬地址的主要目的就是展現給程序一個概念性的映像,將訪問內存,磁盤,特殊硬件結合起來,爲程序提供一個看上去統一的字節數組。

  C編譯器還把每個指針和類型信息聯繫起來,這樣就可以根據指針的類型,生成不同的及其級代碼來存儲指針所指向的數據。儘管C編譯器維護者這個類型信息,但是它生成的機器級程序並不在乎數據類型的信息。每個程序對象都可以簡單視爲一個字節塊。

  與變量相似,指針也具有兩個方面:值和類型。指針的值表示某個對象的地址,指針的類型表示那個位置上所存儲的對象的類型。

  

  尋址和字節順序:對於一些佔用多字節的對象,我們必須建立兩個規則:這個對象的地址是什麼,以及在存儲器中如何排列這些字節。其實在幾乎所有的機器上,多字節的對象都被存儲爲連續的字節序列,然後對象使用所有字節中最小的地址當做本對象的地址~。

  小端法:機器按照存儲器中從最低有效字節到最高有效字節的順序去存儲對象。

  大端法:機器按照存儲器中從最高有效字節到最低有效字節的順序去存儲對象。

  直觀來看,可能大端法更符合人類的習慣。

 

  有符號數和無符號數一起進行運算的時候,會對有符號數進行隱形強制轉換爲無符號數。比如(-1<0U)就是錯的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章