1、變量a是一個64位有符號的整數,初始值用16進制表示為:0x7FFFFFFFFFFFFFFF;變量b是一個64位有符號的整數,初始值用16進制表示為:0x8000000000000000。則a+b的結果用10進制表示為多少?
A.1
B.-1
C.263+262+…+22+21+2^0
D.–(263+262+…+22+21+2^0)
2、TCP建立連接的三次握手中,第二次握手發送的包會包含的標記,最正確的描述是?
A.ACK
B.SYN,ACK
C.SYN,PSH
D.SYN
3、棧是先進后出的數據結構。給定一個大小為3的初始狀態為空的棧,已知一組數據經過這個棧后,最終的數據順序依次為:1 3 2 4 ,問原始的進棧數據不可能是以下的那組?
A.2 3 1 4
B.1 4 2 3
C.4 2 3 1
D.3 1 2 4
4、電路中其中三個門電路非門,與門,或門的示意圖及性質分別如下所示:
非門,使輸入的電平編程相反電平:
與門,使輸入兩個高電平,輸出高電平,其他情況下輸出低電平:
或門。當且僅當輸入兩個低電平時,輸出低電平,否則輸出高電平:
現在對以下的電路中的 A 和 B 引腳分別持續輸入一個高電平( 1 )和一個低電平( 0 ),問最終電路的引腳 C 、 D 、 E 、 F 分別輸出的電平是什么?
A.C=0,D=1,E=0,F=1
B.C=1,D=1,E=1,F=0
C.C=1,D=1,E=0,F=1
D.C=0,D=0,E=0,F=1
5、操作系統中可以使用LRU(least recently used)內存淘汰舊數據的策略,如果內存需要加載新數據但空間又不足,則會按照最近訪問時間進行排序,並將最老的數據淘汰,假設現在內存空間大小為5,原本內存中沒有數據,對內存中數據的訪問順序如下:1,2,5,3,4,6,1,4,3,6,7,8,3,9
A.缺頁次數:9
B.缺頁次數:4
C.缺頁次數:10
D.缺頁次數:5
6、下面的程序中, int32-t 表示一個有符號的 32 位整數,程序的入口是 main 函數,問最終 res 的結果是多少?
A.–(231+230+…+22+21+2^0)
B.0
C.-1
D.程序會死循環
7、給定一個如下所示的圖,圖中的邊代表了兩個節點間的距離。如果使用迪傑斯特拉算法對節點 1 和節點 8 求最短路徑,則當完成計算時,算得節點1 到節點 8 的最短路徑是?同時當完成節點 1 到節點 8 的最短路徑計算時,節點 1 到哪些節點(除了 1 和 8 )的最短路徑也已經計算完畢?( )
8、x86 CPU在實模式下解釋代碼時看到一個地址為2330H:5041H,請問它最終在內存中要找的地址是多少?
A.28341H
B.5374H
C.52740H
D.7371H
9、有三個程序J1,J2,J3。程序在單核CPU執行時,三個程序需要的資源如下所示:
優先級高的程序可以搶占優先級低的程序的CPU,但不能搶占IO。問當所有任務執行完畢時,共消耗的時間是?
A.170ms
B.160ms
C.120ms
D.130ms
答案僅供參考
1、答案解析:正確答案: B
(1)a+b的16進制表示為:OxFFFFFFFFFFFFFFF(16位F),轉為2進制為111……111(64位1,每個F->4位2)。
(2)有符號數:是針對二進制來講的。用最高位作為符號位,“0”代表“+”,“1”代表“-”。所以a+b的結果是一個負數。
(3)計算機中負數是以補碼的形式保存的,將補碼轉換成原碼的計算方式如下:
①. 對於正數,原碼與補碼相同。
②.對於負數,將補碼除符號位之外,按位取反,末位加1,即得到原碼。
(4)a + b = 111……111(64位1)
取反:100……000(1位1,后面63位0)
加一:
10進制:-1。
2、答案解析:正確答案: B
3、答案解析:正確答案: C
注意棧的大小為3
4、答案解析:正確答案: D
5、答案解析:正確答案: C
內存空間5,所以前5個都是缺頁的,因為內存空間中並沒有這五個,然后6置換1,1置換2,然后4.3.6都有不用置換,7置換5,8置換4,3有了,然后9置換3,總共十次。
6、答案解析:正確答案: D
以char為例
f(1,0):
a=2 b=-1
a=3 b=-2
…
a=127 b=-126
a=128 b=-127 溢出–>a=-128 b=-127 char范圍:-128~127
return a+b:-128-127實際上是1(char范圍),繼續循環
而原例為int_32t,臨界情況 a+b: -232+(-232+1)=1,也繼續循環。
因此死循環。
7、答案解析:正確答案: C
初始狀態:路徑長度0:(1)
路徑長度1:(1,5)
路徑長度2:(1,3)
路徑長度3:(1,3,4),(1,2)
路徑長度4:(1,5,8)
節點1到8的最短路徑長度為4; 2,3,4,5節點的最短路徑已經計算完畢; 其中到5節點的最短路徑最小為1;
應該選C,感覺出題人玩文字游戲把自己繞進去了
8、答案解析:正確答案: A
實模式下內存空間的訪問
8086處理器(CPU)內的寄存器都是16位的,地址線上的地址由CPU提供。CPU用兩個16位的值合成一個20位的值:將一個16位的值乘以16(相當於這個16位的值保存在20位寄存器的低16位中,然后將低16位往高位移動了4位)再加上另一個16位的值。將這個由2個16位合成的值提供給20根地址線作為訪問內存的地址值。被乘以16的那個值被稱為段基址,沒有被乘以16的那個值被稱為偏移地址。
CPU在實模式下,段寄存器中的值就是段基址,如果想要通過匯編程序訪問某個內存單元,那么就需要指定一個段寄存器和一個偏移地址或以“段基址值:偏移地址值”的格式。CPU會將段寄存器的值乘以16再與偏移地址相加后,才將這個結果提供給地址線;用段基址和偏移地址的形式給出的表達式,CPU也會給段基址乘以16與偏移地址相加后,才將這個結果提供給地址線。
Figure 2. 實模式下訪問內存(得出內存地址)的方式
這就是說,在匯編程序中,得用段基址:偏移地址的方式訪問內存,因為CPU形成內存地址的方式是“段基址* 16 + 偏移地址”。
按照“段:偏移地址”的方式訪問內存是CPU對內存的一種管理方式
9、答案解析:正確答案: D
因為優先級高的程序可以搶占優先級低的程序的CPU,但不能搶占IO,
所以J1在CPU之后不能搶占J2的IO,J2在IO之后可以搶占J3的CPU。
CPU:J1 40ms + J3 10ms + J2 20ms +J1 20ms
IO:J2 50ms + J1 60ms + J3 20ms
所以共消耗時間為130ms,選D。