软考-程序员-知识点汇总
進制轉換
進制數的縮寫,在最后一位表示。二進制B,八進制O或者Q,十進制D,十六進制為H。
比如0101B,1075Q,189234D,AB0EFH。注意最后一位表示是進制,不是具體數字
二進制與十進制的轉換
二進制轉十進制
100111等于2的5次方+2的2次方+2的一次方+2的零次方
32+4+2+1=39
十進制轉二進制
158,將相鄰的2的次方找出來,首先是128(7次方),剩余是30,然后16(4次方),剩余14,然后8(3次方),剩余6,然后4,2
結果就是10000000+10000+1000+100+10=10011110
二進制與八進制的轉換
二進制轉八進制
10010011,從右往左,三個數放一起,最后不夠三位的話補0。上面這個數可以拆分為:010,010,011。轉成八進制是2,2,3,結果就是八進制的223。
八進制轉二進制
7631轉二進制,每個數轉成二進制的三位數。分別是111,110,011,001。轉為二進制就是111110011001
二進制與十六進制的轉換
二進制轉十六進制
參考上面的八進制,將二進制的4位換成十六進制的一位。1011011100101。可以拆分為:0001,0110,1110,0101。對應的十六進制分別為1,6,E,5。則十六進制是16E5
十六進制轉二進制
ABEF8,轉二進制就是,1010,1011,1110,1111,1000。轉為二進制就是10101011111011111000
十六進制轉十進制
D5C轉十進制。首先拿13*16的二次方+5*16的一次放+12=3420
八進制轉十進制
34567轉十進制。首先拿3*8的四次方+4*8的三次方+5*8的二次方+6*8+7=14711
十進制轉其他進制
整數部分除以進制。從后往前拿到的數據。比如十進制20轉為八進制,20除8等于2余4,剩下的2除8等于0余2。得到的結果就是最后那個余2加上一步的余4。得24。
小數部分,0.5轉為8進制,計算方式為乘8取整。0.58=4。得到的8進制就是0.4。如果是0.2的話,就是0.28=1.6,先拿到一個1,然后再0.68=4.8,拿到一個4,然后再0.88=6.4,一直循環下去。拿到的值就是0.146…
轉換過程中遇到小數
比如二進制10.11轉8進制。前面10轉為8進制是前面補0為010,對應的8進制為2,后面的11后補0,110對應的8進制為6,8進制轉換后就是2.6
原碼、反碼、補碼、移碼
源碼和反碼的表示范圍-127到127
補碼和移碼的表示范圍-128到127
0在補碼和移碼中只有一個編碼,在源碼和反碼中,正0和負0是不同的編碼
二進制的減法是通過補碼的加法來進行運算的。
-128的補碼為10000000(規定)
浮點數
1.23*102 1.23為尾數,10為基數,2為指數
其中N=數符那種是二進制的表示,數符0為整數,1為負數。尾數同上,階符0表示整數,1表示負數,階碼是指數
0.1001*2100
0.1100*2011
浮點數運算
浮點數轉二進制
將-39/64這種數轉為二進制
轉換的前提條件是被除數是2的指數倍。比如64=26
-39/64 = -39/26 = -39*2-6
-39轉二進制等于32+4+2+1 得到10100111
將2-6轉為2的0次方,需要將指數擴大6被,同樣,尾數就需要右移6位,得到的結果就是
10.100111
邏輯運算
計算結果時使用真值表,將所有情況列出來
校驗碼
- 奇校驗和偶校驗分別是在最高位添加1或者0進行校驗。具體的校驗規則就是,如果是奇校驗,則先看數值中有多少個1,如果是奇數個1,則最高位添加0,如果是偶數個1,則最高位添加1.偶校驗相反,如果是奇數個1,則添加1,如果是偶數個1,則添加0。這個校驗的方式比較簡單,但是校驗的完整性不是很強,也不能糾錯。只能發現部分錯誤。
- 海明碼可以在數值的20 21 22等地方插入校驗值,可以校驗錯誤,也可以糾正錯誤。
- crc循環冗余校驗碼,在數值后面插入校驗碼,只能校驗錯誤,不能糾錯。
計算機分類
計算機系統組成
中央處理器(經常錯誤)
中央處理器(cpu)center process unit。主要包含運算器和控制器
運算器用于運算,其中重要的子部件包括
控制器用于進行程序控制,其中重要的子部件包括
指令系統
指令執行方式
指令執行順序:取指->分析->執行
如果并發執行的話,則可以使用流水線技術進行
指令地址結構
二進制表示,前面是操作碼,后面是指令
指令尋址方式
如何尋找指令,氛圍以下5種不同的方式
存儲系統
分為寄存器、cache、內存、外存。
寄存器是cpu內部存儲,速度最快
cache為了解決內存速度慢,cpu速度快而加上來的。cache解決問題的所利用的是局部性原理:包括時間局部性和空間局部性。
- 時間局部性:某條指令一旦執行,有可能會再次執行,某個數據被訪問,有可能會被再次訪問。
- 空間局部性:訪問了某個存儲單元,則可能會訪問附近的存儲單元。
外存容量最大,速度也最慢。
內存也叫主存,可以分為ram和rom,ro代表read only只讀數據。ram代表可讀可寫。其中ram還分為sram和dram。
sram中的s代表static,靜態。只要不斷電,數據保持不變。
dram中的d代表dynamic,動態。數據會不斷消失,想要維持數據不變,需要實時的進行刷新。
容量存儲單元
b字節。B=8b。KB=1024B,MB=1024KB,GB=1024MB,TB=1024GB,PB=1024TB,EB=1024PB,ZB=1024EB,YB=1024ZB
內存編址和容量計算(計算題)
一個內存條里面有很多個芯片。每個芯片可以存儲一定量的內容。內存總容量=芯片數*芯片容量。
每個芯片的容量中有很多存儲單元,這些存儲單元存儲16位二進制數,或者8進制數,亦或者32位數。要計算芯片容量,可以拿芯片的地址區間(高-底+1)乘以存儲單元的位數(16、8、32)。
如題
內存地址區間為:4000H-43FFH,每個存儲單元存儲的是16位的二進制數。這個內存條由4個芯片組成。問每個芯片的容量。
解題思路:每個芯片的容量=總容量/芯片個數=地址區間乘以存儲單元/芯片個數
十六進制的地址區間范圍是400H,轉為十進制就是4*162,拿地址區間乘以存儲單元容量。就是4*162*16bit。
每個芯片的容量是拿總容量再除以4。得到的就是256*16bit
總線系統
系統總線
數據總線是cpu和外界交互的寬度。
地址總線:cpu通過地址總線找內存。總線寬度是32,每條總線可以傳0或1,就是有232個可能。就能訪問到這么多的地址。是4*210*210*210。就是4G的容量。
IO
cpu與外設數據交換的方式
計算機性能指標
計算機性能指標
正常時間,故障時間、修復時間。計算機系統的可用性是指。正常時間/正常時間+故障時間。
多媒體
多媒體分類
其中表現媒體和表示媒體容易出錯。表現媒體是輸入輸出,鍵鼠、打印機、顯示器這些都是表現媒體。表示媒體要注意的是,是用于數據編碼的。編碼是關鍵詞
音頻
有幅度和頻率兩個參數
人聲最高頻率是3400Hz,如果要對人聲采集,則采集的頻率要在最高頻率的兩倍往上。目前采集的頻率都是在8kHz。人耳能聽到的聲音范圍在20-20K,則小于20的次聲波和超過20K的超聲波,都不能被人耳聽到。
圖形圖像
圖形:矢量圖,基本單位為圖元
圖像:位圖,基本單位為像素
容量計算
圖像容量中每個像素16位,代表16b,像素100100,就表示圖片大小位10010016b,如果切換成B則除以8。
如果知道是256色的圖像,256=28,那每個像素就是8位。像素100100,256色圖像。那容量就是1001008b。
150dpi掃描圖片,得到的像素寬是1503,高1504。像素就是450600。每個像素是24b。轉為B的話,結果就是450600*24/8=810000B的容量
多媒體總結
操作系統
進程
進程三種狀態
進程的三種狀態分別是就緒、阻塞、運行。如下圖,調度后運行,運行過程中時間片到返回就緒。運行中等待進入阻塞,阻塞后進入就緒。所以答案是A
信號量
整型變量。如果有10個資源,20個進程。20個進程申請10個資源,信號量的范圍就是-10到10。負數就是排隊數。如果30個進程的話,那信號量的范圍就是-20到10。
總結來說。n個資源,m個進程。信號量的范圍就是(n-m)到n
達到死鎖的臨界點
假設有m個進程,每個進程需要n個資源。一定不會死鎖的條件是每個進程分配n-1個資源,最后再多給一個。則多給的這一個,給任意一個進程就可以繼續進程,一個進程結束后,就可以釋放更多的資源,從而繼續其他的進程。所以不會產生死鎖的條件就是
m*(n-1)+1
如果再少一個資源,則可能會產生死鎖
如果只有n-1個資源,則一定會產生死鎖
pv操作和同步互斥
pv操作指的是針對同一個資源,有獲取和釋放。p是獲取資源,v是釋放資源。互斥指的是在一個進程中,進行資源的獲取和釋放。同步指的是在不同的進程中,對資源進行獲取和釋放。
如果是互斥信號量,則初始值為1。
下題中S1和S2都是在不同的進程中進行資源的獲取和釋放,所以他們兩個都是同步信號量。生產產品時首選需要獲取倉庫的庫存容量,所以S1的初始值為n。銷售產品時,首先要看倉庫中有沒有產品,所以S2的初始值為0。
存儲管理
如果按照分頁存儲管理,一個程序可以分為很多頁,每頁往內存中加載,內存中也分了不同的塊,每頁加載到內存的不同塊中。如程序有1-10頁,第一頁存放到內存的3號塊中,第二頁存儲到內存的5號塊中。
邏輯地址與物理地址的轉換
每一頁的存儲結構是前面頁號,后面頁內地址
頁內地址是212個,表示頁的長度是4k。頁號是220個,表示可以存儲1M個頁號
頁面置換算法
頁面多,內存少。比如有5頁內容,內存每次只能放3頁,則需要進行置換。將功能完成的頁置換出來
分頁地址轉換
邏輯地址表示的都是頁號+業內地址。業內地址的大小是4k,轉為16進制是212,轉為16進制就是3位的16進制數。所以邏輯地址的25EF中2指的是頁號,5EF指的是業內地址。對應途中的頁表,頁號2對應的頁內地址(塊號)是4,業內地址是相對地址不變,所以轉換后的物理地址就是45EFH。
虛擬存儲
虛擬存儲器的容量由主存+輔存組成。所以A和B都不對。
虛擬存儲器由硬件和操作系統實現調度,所以C也不對。
存儲總結
設備管理
磁盤管理
磁盤調度算法
磁盤清理
磁盤性能
磁盤的平均訪問時間跟磁盤轉速無關。轉速快不代表尋道時間快。就跟性能指標中不包含磁道數一樣,不是說磁道數越多性能就越好。
文件管理
文件命名規則
要注意不允許使用的字符
作業管理
作業調度
用戶界面設計原則(ui)
程序設計語言
表達式
程序表達式分為前綴表達式、中綴表達式、后綴表達式。對應的分別是
+ab,a+b,ab+
表達式考題
考試會考各種表達式之間的轉換。
將中綴表達式轉化為后綴表達式
a+bc-5
轉為后綴的話,首先是乘法。然后再加法,最后減法
bc*
abc*+
abc*+5-
需要注意的是,計算的順序不能變。上面的a在bc前面。轉換后,a還是在bc前面
如果上面的表達式轉前綴的話
*bc
+abc
-+a*bc5
傳值和傳址
- 如果是傳值,則直接將函數的值傳入,值傳入函數后,函數內值的變化不會影響原函數內值得內容。
- 如果是傳址,則傳入的是地址數據。在函數內改變該值時,會同步影響到原函數的值。
所以上題中,如果是傳值,則在f1中,-5傳入得到a為-6,傳入f2中,x的修改,不會影響到f1中x的數據。所以f1中a還是-6,返回的x為12。得到的結果就是8
上題中如果是傳址,則f1中a為-6,拿到f2中x變成了4。這個時候f1中的a同樣也變成了4。最后f1的結果就是4-12=-8
有限自動機和正規式
正規式
在正規式中,|代表或。代表0個或多個。(a|b)*表示任意ab組成的字符串。可以表示a,可以表示b,可以表示aa,表示ab等等。上面題目說要a開頭,所以需要選擇c選項
正規式的考題中,如果設計到集合中元素的個數。計算方式為前面集合中2種可能,后面集合中3種可能。所以可能的總數是23=6。此題的答案就是c,d
有限自動機
有起點,有終點。從起點到終點都能識別哪些內容。上面圖一表示要先識別a,在識別b然后到終點。圖二表示可以識別a,也可以識別b,然后到終點。圖三表示可以識別任意多個a,然后到終點。
這個題目中。從s0到s3可以經過的路線中,只有a選項不能到達s3。所以結果就是a
有限自動機與正規式的轉換。
在這個題目中,通過有限自動機可以看到前面數字是0,后面數字是0,中間是任意多個1或2。所以答案就是b選項
數據結構和算法
字符串
在字符串中,長度為0的串稱為空串,空白串里面有空格或者制表符。串的模式匹配指的是尋找字符串中最早出現的字串。兩個字符串比較時,按照ascii碼進行比較,不是比較長度。所以這個題目選擇A
非平凡字串的概念如題描述,非空,且不同于本身。當字符串長度為1的時候,非平凡子串的數量為0,可以通過排除法,拿到結果為D選項
矩陣
矩陣的乘法,就是那第一個矩陣的行乘以第二個矩陣的列,行數要和列數相等。得到的新矩陣中第一行第一列的值就是第一個矩陣的行乘以第二個矩陣的第一列(行數和列數相等的情況下),得到新矩陣中第一個數據。如上所示,11+03
這個題中,可以拿到的信息是FN = FN-1+FN-2。拿就是說f4=f3+f2。通過矩陣的相乘,上面A矩陣中的第一列與(fn,fn-1)相乘,得到的結果是f(n+1),也就是fn+f(n-1)。那矩陣的第一列的數據就應該是1,1。第二列通過相同的方法,得到的結果應該是1,0。所以第一個答案就是D選項。第二個題中如果n等于1,那么雙邊相等,可以得到A的0次方正確,所以可以選擇A,也可以通過上面的公式做遞歸,(f(n+1),f(n))=(f(n),f(n-1))A=(f(n-1),f(n-2))A2=(f(n-2),f(n-3))A3根據前面獲取的規則,如果括號中的值是(f(2),f(1))時,表示從f(n)一直降到了f(1),降了n-1次,所以指數也會增加到n-1次
棧和隊列
隊列先進先出,棧后進先出。函數調用和返回控制是用棧來實現的。
二叉樹
節點的度:表示這個節點有多少個孩子。
樹的度:與節點類似,表示樹有多少個孩子。如果只有兩個,說明是二叉樹。
- 滿二叉樹:擁用完整的節點
- 完全二叉樹:允許缺失葉子節點,但是葉子節點的缺失必須是最后面的
- 不完全二叉樹:允許缺失任意節點
根據題目得出,子節點是父親節點的2i和2i+1。E節點為2,則F節點為5,G節點為11=2*5+1。k和h分別是22和23
總結
以上是生活随笔為你收集整理的软考-程序员-知识点汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS常见面试题(持续更新)
- 下一篇: windows xp 下的putty不能