程式設計師視角的計算機系統 2.2 整數的表示
在這一部分中,我們描述用位元來編碼整數的兩種不同的方式。乙個僅能夠表示非負的整數。
另乙個能夠表示所有的整數。我們將看到它們的數學性質與它們的機器級別的實現是高度相關
的。我們也調查研究了在適合不同的長度的表示時的擴充套件與收縮乙個編碼過的整數的效果。
2.2.1 整數的資料型別
c支援一些整數的型別,乙個表示整數的有限的範圍。每個型別能使用關鍵字char,short,long
或者是long long來指定大小,正如所表示的數是非負的,還是可負的(這是預設的情況)。
對於不同的大小的位元組分配的數量是根據機器的字大小和編譯器而變的。基於位元組分配,
不同的大小允許不同的值的表示的範圍。絕大多數的64位的機器 使用8位元組的表示,得到了比在
32位機器上的4位元組的表示大得多的值範圍。
注意的乙個重要的特徵是,值 的範圍是不對稱的負的範圍比正的範圍擴大了乙個整數。我們將看到
當我們考慮負數如何被表示時,這為什麼會發生。
c標準定義了每個資料型別的最小值,必須 被表示。資料型別long long在c99中被引入。它要求
最少8個位元組表示。
2.2.2 無符號的編碼
假定我們有乙個整數的資料型別有w位長。我們寫乙個位向量x,表示整個向量,或者是
[xw-1,xw-2,....x0],表示向量的單個位元位。對於x在乙個二進位制表示,我們表示這個
解釋,作為乙個函式b2uw(x)
方程和例子如下圖:
程式設計師視角的計算機系統 2 3 整數的算術
程式設計師視角的計算機系統 2.3 整數的算術 許多程式設計師的新手驚訝於兩個正數相加返回了負數的發現。還有x2.3.1 無符號的加法 考慮兩個非負的整數x,y,例如 0 x,y 2 w 1.這兩個數都能表示為w位長的無符號數。如果 我們計算它們的和,然而,我們有乙個可能 的範圍是0 x y 2 w...
程式設計師視角的計算機系統 2 1 2 字
程式設計師視角的計算機系統 2.1.2 字 每個計算機都有乙個字的大小,顯示出整數和指標資料的名義上的大小。因為乙個虛擬位址 被這樣的乙個字進行編碼,字的大小確定的最重要的系統引數是虛擬位址空間的大小。也就是 對於乙個機器而言,乙個w位長的字大小,虛擬位址的範圍是從0到2 w 1,程式能讀取的最多 ...
程式設計師視角的計算機系統 1 5 緩衝問題
程式設計師視角的計算機系統 1.5 緩衝問題 從這個簡單的例子上的乙個重要的課程是乙個系統花費了大量的時間來把資訊從乙個地方 移到另乙個地方。在你好程式中的機器指令剛開始時儲存在磁碟中。當程式被載入時,它 們被複製到記憶體中。當處理器執行程式時,指令從記憶體複製到處理器中。相似的是,資料 字串 he...