考研複試計算機組成原理面試題—概述、數制的表示與計算
寫作目的:爲了應對考研複試中的面試,我整理了導師可能提問的地方,力求用口語化的語言描述出來。
這只是第一篇文章,陸續還有計算機組成原理的其它章節,還會推出操作系統、數據結構、計算機網絡、數據庫的複試題整理
思維導圖在我的processon。如果對你有幫助就打賞一下吧。
https://www.processon.com/view/link/5e6ca476e4b0f2f3bd1f89cd
目錄
計算機概述
馮諾依曼機的特點?
1、五個組成部分:運算器、控制器、存儲器、輸入設備、輸出設備。
2、數據和指令以同等的地位存儲在主存儲器當中,可按照地址訪存
3、指令和數據均用二進制代碼表示
4、指令由操作碼和地址碼組成,操作碼錶示操作性質,地址碼錶示操作數所在位置
5、指令以順序存放的。通常指令按順序執行,在特定條件下根據運算結果或特定的條件改變執行順序
6、早期馮諾依曼機以運算器爲中心,輸入輸出設備通過運算器與存儲器相連
爲什麼現在計算機以存儲器爲中心?
早期計算機存儲容量小,數據經過運算器較少,在效率上對系統沒有明顯的影響。但是現在存儲器容量越來越大,且外部設備的速度遠小於CPU的速度,所以數據經過運算器會拖慢系統的效率。現在計算機以存儲器爲中心,讓IO繞過運算器。
什麼是“存儲程序”
程序在運行前,都先存在主存儲器當中,按照其在程序中的首地址執行第一條指令,然後就按照該程序規定的順序執行其它指令,順序程序結束。
按照“存儲程序”原理,計算機應該有哪五大功能
數據傳遞、數據存儲、數據處理、操作控制、操作判斷
計算機工作的步驟?
1、把指令和程序裝入主存儲器
2、從程序的首地址運行程序
3、取出第一條指令,然後譯碼、執行,控制計算機各個部件協同運行,完成這條指令後,計算下一條指令的地址。關鍵詞 取出、譯碼、執行、下一條指令
4、用新得到的指令地址,繼續讀取第二條指令執行。每條指令都是取指、譯碼、執行直到結束
翻譯程序、彙編程序、編譯程序、解釋程序有什麼差別?
翻譯程序是將高級語言翻譯成如彙編語言和機器語言這樣的程序。翻譯程序包括,編譯程序和解釋程序。
彙編程序是將彙編語言翻譯成機器語言的程序。
編譯程序是將源代碼一次全部翻譯成目標代碼的程序,它將一種代碼文件翻譯成另一種代碼文件,如果源代碼不修改,則不用重新編譯。
解釋程序,是將源代碼的一條語句翻譯成機器代碼,並立即執行。解釋執行是,翻譯一條源代碼就執行一條,適合調試程序時使用。
計算機體系結構和計算機組成結構的聯繫和區別
計算機體系結構是彙編語言或機器語言程序員所能看到的傳統機器屬性,例如指令集、數據類型、存儲器尋址技術,都是抽象屬性。
計算機組成是指如何實現計算機體系結構所體現的屬性,它包括很多對程序員來說透明的硬件細節。
如計算機指令系統屬於結構問題,而如何實現取指、取操作數就是計算機組成問題。不同的計算機可能有相同的結構,但是如何實現這些結構可以完全不同,即他們的組成方式不同。例如計算機有沒有乘法操作是系統結構問題,如何實現乘法就是計算機組成問題。
計算機主要性能指標
機器字長、數據通路帶寬、主存容量、運算速度。
運算速度包括:吞吐量和響應時間、主頻和CPU週期、CPI等
主頻高的cpu一定比主頻低的cpu快嗎?
不一定,計算機運算速度,cpu的主頻只是其中一個指標。沒有明顯的公式表明。主頻越高計算速度越快。
機器字長、指令字長、存儲字長的區別和聯繫
機器字長是計算機能直接處理的二進制數據的位數,機器字長一般等於內部寄存器的大小,它決定了計算機運算的精度
指令字長是一個指令中包含的二進制代碼的位數
存儲字長是一個存儲單元包含的二進制代碼的位數
指令字長一般是存儲字長的整數倍
數據的表示和運算
真值和機器數
用正負號所表示的數就是真值,真值是機器數所代表的實值。
用二進制數所表示的真值就是機器數。
有哪些常用BCD碼
BCD碼是用二進制表示十進制的編碼方式。有8421嗎,餘三碼等
ASCII碼
國際上用7位二進制碼標識一個ASCII碼,包括數字、字符、還有不可印刷的字符。
大端模式和小端模式
大端模式:主存字由2B或4B組成時,以先存儲高位字節後存儲低位字節的方式存儲。
小端模式:相反
描述常用校驗碼
檢驗碼是能夠發現或能夠自動糾正錯誤的數據編碼。碼距不小於2時開始有了檢錯能力,碼距越大,檢錯能力就越強,且檢錯能力總是大於糾錯能力。
常用校驗碼有奇偶校驗碼、漢明碼、CRC循環碼
奇偶校驗碼,在原始數據的最高位添加1或者0使其數據中的1恰好爲奇數或者偶數。只能發現代碼中奇數位出錯的情況。常用在對存儲器數據的檢查或傳輸數據的檢查中
CRC循環碼,通常用於數據鏈路層,適合對大量數據校驗。
解釋各種機器數表示法的其含義表示的範圍
原碼簡單直觀的機器數表示法。原碼的0有兩種表示方法
補碼的正數表示和原碼相同,負數等於原碼的非符號位取反再+1,補碼加減法操作簡單
,0的表示唯一。
反碼的正數表示和原碼相同,負數等於原碼的非符號位取反。
移碼常用來表示浮點數的階碼 ,它只能表示整數。
移碼的特點
1、移碼中零的表示是唯一的。
2、一個真值的移碼和補碼僅僅差一個符號位
3、移碼全0表示對應真值最小值,移碼全1表示對應真值最大值
4、移碼保持了數據原有的順序,方便比較大小
溢出的三種判別方法
1、採用溢出邏輯表達式
2、雙符號位法。01正溢出、10負溢出
3、一位符號位判別法。如果符號位進位和最高數位相同,就沒有溢出。
描述IEEE754標準
IEEE754標準規定浮點數類型有短浮點數、長浮點數、臨時浮點數類型。
常用的浮點數格式 由符號位、階碼、尾數組成
短浮點數有8位階碼、23位尾數、偏置127
浮點數11位階碼、52位尾數、偏置1023
規格化的二進制浮點數,數值的最高位總是1,爲了能多多表示一位有效位,就把這個1隱藏了。
短浮點數,階碼取值範圍1到254;長浮點數取值範圍1到2046
浮點數的加減法步驟
①對階,階碼小的向階碼大的對齊;②尾數求和;③規格化;④舍入,0舍1入法,可能使尾數溢出,再次規格化,恆1法,最後一位置1;⑤溢出判斷。
強制類型轉化規則
char->int->long->double,float->double最常見,轉化過程沒有損失。
int轉float可能有精讀損失,int的32位全部用於表示數值,float有24位描述數值,再多會有舍入。
計算機機器字長足夠能精確表示每一個數嗎?
不能精確表示每一個數,例如0.1這個數,我們只能無限接近它,但不能表示出它。小數在機器中是被離散地表示的。
字長相同情況下浮點數和定點表示的範圍有什麼不同
字長相同浮點數比定點數表示的範圍更廣,但是定點數的全部位數都用來表示數值本身,精度要比相同字長的浮點數要大。
用移碼錶示浮點數的階碼有什麼好處
浮點數進行加減運算,常常要階碼比較大小,移碼保留了原來真值的大小順序,方便比較大小。
檢驗特殊值(0或max)比較容易。當階碼取0或者max表示的結果如下:
0:表示指數爲負無窮大,整個數趨近於0,尾數如果也爲0,可以用來表示0;尾數不爲0表示未正規化數。
max:表示指數正無窮大,若尾數爲0,表示正負無窮大;尾數不爲0,表示浮點數運算錯誤。