2013年3月25日 星期一

2013.3.22 上課心得

本周上課重點摘要(2013.3.22)

1.      浮點數(例題補充)
2.      錯誤更正漢明碼介紹
3.      CPU(ALU AND CU)
4.      Register: MAR , MBR, I/O AR, I/O BR, PC , AC, 等暫存器介紹
5.      機器循環週期(擷取指令/解碼/執行/存回)






如圖所示,錯誤更正漢明碼,屬於八位元,一次只能偵出一個錯誤。
先將八位元的數字放入,以⊕的原則(偶數個為0,奇數個為1)找出C1C2C4C8所得出的數字為10
之後將錯誤的單一數改入,以⊕的原則,再找1C2C4C8所得出的數字為10
最後將所得之兩個結果以⊕的原則相加,便可得出其所出錯的部分在D2




3.      CPU(ALU AND CU)
一般CPU可分成數個工作單元:
甲、控制單元 (CU)
乙、算術邏輯單元 (ALU) 與暫存器
丙、解碼單元
丁、匯流排單元
戊、預先擷取單元
這些單元的運作模式就像工廠的生產線,目的是為了執行程式中的指令



3.      Register: MAR , MBR, I/O AR, I/O BR, PC , AC, 等暫存器介紹
暫存器 (register) 是位於CPU內部的記憶體,用來暫時存放目前正在進行運
算的資料或目前正好運算完畢的資料。

暫存器通常分成兩大類,其一是程式設計人員能夠存取的可見暫存器,其二
是程式設計人員無法存取的控制與狀態暫存器。

*  可見暫存器又分成下列幾種:
    通用暫存器 (general purpose register)
    資料暫存器 (data register)
    位址暫存器 (address register)
    條件碼暫存器 (condition code register) 
*  控制與狀態暫存器又分成下列幾種:
    程式計數器 (program counter)
    指令暫存器 (instruction register)
    記憶體位址暫存器 (memory address register)
    記憶體緩衝暫存器 (memory buffer register)
    ALU緩衝暫存器 (ALU buffer register)
    中斷向量暫存器 (interrupt vector register)
    程式狀態字組 (program status word)


4.      機器循環週期(擷取指令/解碼/執行/存回)
CPU執行一個指令的過程叫做機器循環週期 (machine cycle),包含下列四個
步驟:
*      指令擷取
*      指令解碼
*      指令執行
*      結果存回

2013年3月19日 星期二

2013.3.15 上課心得

本周上課重點摘要(2013.3.15)

1.      乘法概念介紹
2.      介紹浮點數格式
3.      錯誤更正碼



1. 乘法概念介紹
    類似小學乘法
    每個位數有所謂的“部分乘積
    小心地移位,並置放每一個部分乘積
    相加部分乘積


2. 介紹浮點數格式
    實數是帶有小數點的數字
    電腦的浮點數類似自然界的實數
    不僅可以用於十進位
    也同樣適用於二進位
    浮點數正規化
    注意:浮點表示法中(1.有效數)1,是經過正規化處理的結果
    c.f. 十進位的科學記號也常被要求正規化,以便在小數點之前,只能有單一位數,比如: 3.123 x 103
    事實上,如果這個最前導位元總是1的話,何必浪費空間來儲存這個位元呢!
    因此浮點表示法總是省略最前導位元1
    偏移指數的設計是為了讓指數可以是負數,因而可以形容極小數!
    符號位元(1位元)代表±
    0為正、1為負
    有效數(23位元)代表小數點後的數字(也稱假數)
    小數點前的數字總是1
    偏移指數(8位元)代表必須減127的指數
    指數會指出小數點真正的位置
     因此浮點表示法為±(1.有效數) x 2偏移指數-127




3. 錯誤更正碼
  可用來保護數位資料,以免資料在傳輸過程中因發生錯誤而喪失。


2013年3月12日 星期二

2013.3.8 學習心得

本周上課重點摘要(2013.3.8)

1.      進位的觀念(二進位、八進位、十進位、十六進位)
2.      各個進位轉十進位的方法
3.      十進位轉二進位的方法
4.      二進位轉八進位的方法
5.      二進位轉十六進位的方法
6.      八進位與十六進位轉換的方法(以二進位為中介來進行轉換)
7.      電腦進行運算的方式


1.      進位的觀念:
數字系統
二進位:01
八進位:01234567
十進位:0123456789
十六進位:0123456789ABCDEF

2.      各個進位轉十進位的方法:
舉例來說
35(十進位)3×1015×100
11.01(二進位)1×211×200×2-11×2-2
   256.23(八進位)2×825×816×802×8-13×8-2
   56789A.BC5×1656×1647×1638×1629×161
10×16011×16-112×16-2

3.      十進位轉二進位的方法
舉例來說
3.25(十進位)=(二進位)
第一步將小數點前的數字以短除法除以2(該進位的數字),直到沒得除為止
如此可以得到其二進位小數點前的數字11













第二步將小數點後的數字以乘法乘以2(該進位的數字),直到小數點後無數字
如此可以得到其二進位小數點後的數字.01
0.25
         ×    2
    0.50
   ×    2
1.00

3.25(十進位)=11.01(二進位)


另舉例來說
59.75(十進位)=(二進位)
第一步將小數點前的數字以短除法除以2(該進位的數字),直到沒得除為止如此可以得到其二進位小數點前的數字111011



第二步將小數點後的數字以乘法乘以2(該進位的數字),直到小數點後無數字
如此可以得到其二進位小數點後的數字.11
0.75
         ×    2
    1.50
   ×    2
1.00

59.75(十進位)=111011.11(二進位)


4.      二進位轉八進位的方法
舉例來說
111011.11(二進位)=?(八進位)
以小數點為起點,左右各以三個數字為一個單位(不足三個數字則補零)
   111               011 .         110(二進位)
                     ↑             
222120     2120       2221

                   ↓
            7 3 . 6(八進位)

5.      二進位轉十六進位的方法
舉例來說
111011.11(二進位)=?(十六進位)
以小數點為起點,左右各以四個數字為一個單位(不足四個數字則補零)
  0011          1011 .         1100  (二進位)
                                  
 2120      232120        2322

                     ↓
            3  B . C(十六進位)

6.      八進位與十六進位轉換的方法(以二進位為中介來進行轉換)
舉例來說
31562(八進位) =?(十六進位)
先將八進為轉成二進位
 3        1       5       6       2  (八進位)
      ↓          ↓     
011   001   101   110   010

再由二進位轉成十六進位
0011            0011           0111           0010
                                ↑               
2120         2120      22 2120         21
                          ↓
               3 3 7 2  (十六進位)


另舉例來說
A3F.EC(十六進位) =?(八進位)
先將十六進為轉成二進位
 A          3          F.         E         C  (十六進位)
         ↓                       
1010   0011   1111.    1110   1100  (二進位)

再由二進位轉成八進位
  101           000           111              111.             111               011           000
                ↑                                                              ↑            
 2220             0       222120    222120    22 2120     2120               0

                                         ↓
                         5 0 7 7 . 7 3  (八進位)

7.      電腦進行運算的方式


電腦只有加法器和補數器,因此在正負相加時,必須將負數做出轉換,將轉換後的數字,同樣進行相加,得到相同知答案。其流程為:先保留正數,然後將其負數找到其(N進位-1)的補數,接著找到(N進位)的補數【最後數字+1即可】,之後將最後找到的補數與原先的正數相加,即可得到最後的答案。
【最後結果有進位的話代表其和為正數,沒進位的話代表其和為負數】

舉例來說
7523.6404810.248=?  (十進位)
電腦的運算中認為7523.640+(-4810.248=?  (十進位)
   因此先將找出-4810.248的補數
   9999.9994810.24851893.751 ~~(N進位-1)的補數
   再進而找出(N進位)的補數>>  51893.752【最後數字+1即可】
   最後再以7523.64051893.75212713.392
  最後結果有進位的話代表其和為正數,沒進位的話代表其和為負數】
   本題有進位,故答案為2713.392

另舉例來說
4810.2487523.640=?  (十進位)
電腦的運算中認為4810.248+(-7523.640=?  (十進位)
   因此先將找出-7523.640的補數
   9999.9997523.6402476.359 ~~(N進位-1)的補數
   再進而找出(N進位)的補數>>  2476.360【最後數字+1即可】
   最後再以4810.2482476.3607286.608
  【最後結果有進位的話代表其和為正數,沒進位的話代表其和為負數
   本題沒進位,故答案需再找補數回來,答案為2713.392(負數)

   舉例來說
3426=? 
電腦的運算中認為34+(-26=?
3400100010(二進位)
2600011010(二進位)
   因此先將找出-26的補數
   00011010 11100101  ~~1的補數
   再進而找出2的補數>>  11100110【最後數字+1即可】
   最後再以0010001011100110100001000(二進位)
  最後結果有進位的話代表其和為正數沒進位的話代表其和為負數
   本題有進位,將其省去,故答案00001000(二進位),亦為8(十進位)(正數)

   另舉例來說
2634=? 
電腦的運算中認為26+(-34=?
3400100010(二進位)
2600011010(二進位)
   因此先將找出-34的補數
   00100010 11011101  ~~1的補數
   再進而找出2的補數>>  11011110【最後數字+1即可】
   最後再以000110101101111011111000 (二進位)
  最後結果有進位的話代表其和為正數沒進位的話代表其和為負數
   本題沒進位,故答案需再找補數回來,答案為8(十進位)(負數)