1. 程式人生 > >【零基礎向】軟考之路(第一章)計算機系統知識(第三節)

【零基礎向】軟考之路(第一章)計算機系統知識(第三節)

寫在前面:

       本系列文章用於記錄本人軟考學習歷程,適用於零基礎人群,每天不定期更新,如果讀者哪裡不理解或者發現哪裡理解的有問題,歡迎評論,一起進步學習,祝大家都能順利通過考試~大笑

第三節 資料表示

    本節主要是考察進位制轉換,也就是計算能力,需要熟記各個進位制之間的轉換關係,一定要多做題!!!

    一般出題都是會給你一個十進位制數,讓你求原碼、反碼、補碼、移碼。

  • 什麼是機器數?

各種數值在計算機中表示的形式就是機器數,其特點就是採用二進位制計數制,數的符號用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