【零基礎向】軟考之路(第一章)計算機系統知識(第三節)
寫在前面:
本系列文章用於記錄本人軟考學習歷程,適用於零基礎人群,每天不定期更新,如果讀者哪裡不理解或者發現哪裡理解的有問題,歡迎評論,一起進步學習,祝大家都能順利通過考試~
第三節 資料表示
本節主要是考察進位制轉換,也就是計算能力,需要熟記各個進位制之間的轉換關係,一定要多做題!!!
一般出題都是會給你一個十進位制數,讓你求原碼、反碼、補碼、移碼。
- 什麼是機器數?
各種數值在計算機中表示的形式就是機器數,其特點就是採用二進位制計數制,數的符號用0和1表示,小數點則隱含,表示不佔位置。機器數對應的實際數值稱為數的真值。
機器數有無符號數和帶符號數之分。無符號數表示正數,在機器數中沒有符號位
1.純整數:小數點的位置在機器數的最低位之後。
2.純小數:小數點的位置在機器數的最高位之前(符號位之後)。
為了方便運算,帶符號的機器數可採用原碼、反碼、補碼、移碼等不同的編碼方法,機器數的這些編碼方法稱為碼制。
二進位制轉十進位制的小技巧之1248規則:
假設我們有一個八位的二進位制數1111 1111,那麼他每一位其實代表的是一個十進位制整數,請看如下分析:
0000 0001 代表的是1
0000 0010 代表的是2
0000 0100 代表的是4
0000 1000 代表的是8
以此類推下來,1111 1111 也就是 128+64+32+16+8+4+2+1 = 255,不明白可以留言或者多看幾遍。
- 如何計算一個數的原碼、反碼、補碼和移碼?
1.原碼的表示法。在給定機器字長n(也就是採用n個二進位制位表示資料)的前提下,將X的原碼記為[X]原。
這裡需要分兩種情況來討論,即純整數和純小數。
若X是純整數,則當X>=0時,值不變,仍為本來的數,直接轉為二進位制即可。當X<0時,為2的n-1次方再加上X的絕對值。
若X是純小數,則當X>=0時,值不變。當X<0時,值為1加上X的絕對值。
例題1.1 若機器字長為8,分別寫出一下數的原碼+1,-1,+127,-127,+45,-45,+0.5,-0.5
[+1]原 = 0000 0001 [-1]原 = 1000 0001 (129也就是 2的7次方再加上-1的絕對值)
[+127]原 = 0111 1111 [-127]原 = 1111 1111 (255也就是 2的7次方再加上-127的絕對值)
[+45]原 = 0010 1101 [-45]原 = 1010 1101 (173也就是 2的7次方再加上-45的絕對值)
[+0.5]原 = [email protected] 0000 [-0.5]原 = [email protected] 0000 (@符號代表小數點)
[+0]原 = 0000 0000 [-0]原 = 1000 0000
2.反碼的表示法。
若X是純整數,則當X>=0時,值不變,仍為本來的數,直接轉為二進位制即可。當X<0時,為2的n次方減一再加上X。
若X是純小數,則當X>=0時,值不變。當X<0時,值為2減去2的-(n-1)次方加上X。
[+1]反= 0000 0001 [-1]反 = 1111 1110 (254也就是 256-2=254)
[+127]反 = 0111 1111 [-127]反 = 1000 0000 (128也就是 256-128=128)
[+45]反 = 0010 1101 [-45]反 = 1101 0010 (210也就是 256-46=210)
[+0.5]反 = [email protected] 0000 [-0.5]反 = [email protected] 1111 (@符號代表小數點 )
[+0]反 = 0000 0000 [-0]反 = 1111 1111
3.補碼的表示法。
若X是純整數,則當X>=0時,值不變,仍為本來的數,直接轉為二進位制即可。當X<0時,為2的n次方加上X。
若X是純小數,則當X>=0時,值不變。當X<0時,值為2加上X。
[+1]補= 0000 0001[-1]補 = 1111 1111 (255也就是 256-1=255)
[+127]補 = 0111 1111 [-127]補 = 1000 0001 (129也就是 256-127=129)
[+45]補 = 0010 1101 [-45]補 = 1101 0011 (211也就是 256-45=211)
[+0.5]補 = [email protected] 0000 [-0.5]補 = [email protected] 0000 (@符號代表小數點 )
[+0]補 = 0000 0000 [-0]補 = 0000 0000
4.移碼錶示法。規定偏移量為2的n-1次方,這裡字長為8,則偏移量為128。
若X是純整數,則[X]移=128 + X,若X是純小數,則[X]移=1+X。
[+1]移= 1000 0001 [-1]移 = 0111 1111 (127也就是 128-1 =127)
[+127]移 = 1111 1111 [-127]移 = 0000 0001 (1也就是 128-127 =1)
[+45]移 = 1010 1101 [-45]移 = 0101 0011 (83也就是 128-45 = 83)
[+0.5]移 = [email protected] 0000 [-0.5]移 = [email protected] 0000 (@符號代表小數點 )
[+0]移 = 1000 0000 [-0]移= 1000 0000
考題解析:
利用IEEE754標準將數176.0625表示為單精度浮點數。
第一步,將十進位制轉為二進位制(機器數)
(176.0625)10 = (1011 0000.0001)2
對二進位制數進行規格化處理: 10110000.0001 = 1.01100000001 X 2的7次方
這樣就保證了b0為1,而且小數點在第一位,去掉b0,擴充套件為單精度浮點數所規定的23位位數
01100000001000000000000
然後求階碼,上述指數為7,單精度規定指數偏移量為127,7+127 = 134 E=134
因為是正數 S=0
所以 最終結果為0 10000110 01100000001000000000000