程式設計師視角的計算機系統 2.2.7 截斷乙個數
假定不是擴充套件乙個數, 我們要降低乙個數的二進位制位元位的表示的數量。
例如,這發生在如下的**中:
1 int x=53191;
2 short sx=(short) x; /*-12345*/
3 int y=sx; /*-12345*/
在乙個經典的32位長的機器上,當我們把乙個x對映到短整數型別時,
我們把32位長的整型數截短成16位長的短整型。正如我們之前看到的
這個16位長的模式是-12345的二補碼的表示形式。當我們把它對映回
長整數型別時,符號擴充套件將把高16位設定為1,返回32位長的二補碼
表示形式的-12345。
當截掉w位長到k位長的數時,我們去掉了w-k個高位的位元位。對於溢位的形式,
截掉乙個數能夠改變它的值。我們現在調查一下什麼數值能成為結果。對於乙個
無符號的x,截掉的結果 等價於x對於2^k取模。
練習問題2.24
假定我們截掉乙個4位的數為乙個3位的數。填寫如下的**的空白處。使用無符號
和二補碼表示形式。
十六進製制 無符號 二補碼
———————— —————————— ————————————
原始值 截斷值 原始值 截斷值 原始值 截斷值
——————————————————————————————————
0 0 0 ————— 0 ——————
2 2 2 ————— 2 ——————
9 1 9 ————— -7 ——————
b 3 11 ————— -5 ——————
f 7 15 ————— -1 ——————
程式設計師視角的計算機系統 2 1 2 字
程式設計師視角的計算機系統 2.1.2 字 每個計算機都有乙個字的大小,顯示出整數和指標資料的名義上的大小。因為乙個虛擬位址 被這樣的乙個字進行編碼,字的大小確定的最重要的系統引數是虛擬位址空間的大小。也就是 對於乙個機器而言,乙個w位長的字大小,虛擬位址的範圍是從0到2 w 1,程式能讀取的最多 ...
程式設計師視角的計算機系統 1 5 緩衝問題
程式設計師視角的計算機系統 1.5 緩衝問題 從這個簡單的例子上的乙個重要的課程是乙個系統花費了大量的時間來把資訊從乙個地方 移到另乙個地方。在你好程式中的機器指令剛開始時儲存在磁碟中。當程式被載入時,它 們被複製到記憶體中。當處理器執行程式時,指令從記憶體複製到處理器中。相似的是,資料 字串 he...
程式設計師視角的計算機系統 第一章 計算機系統 之旅
程式設計師視角的計算機系統 第一章 計算機系統 之旅 乙個計算機系統由硬體和系統軟體組成,硬體和軟體一起工作來執行應用程式。系統的特定的實現隨時間的流逝而改變,但是它的本質性的概念不會改變。所有的計算機系統都有相似的硬體和軟體元件來執行相似的功能。這本書為程式設計師 而寫,程式設計師們需要在他們的工...