歐千郁的學習歷程 - 111-1計算機概論 - 計算機組織與結構
 

夜四技企資三甲
1111AD011
歐千郁


歷程檔案 Portfolio

    計算機組織與結構

    一個筆記性質的文章,想到什麼寫什麼。

    • 數值(Numeric)
    • 數碼(Code) 如:ASCII,Big-5,UTF-8

    什麼是UTF-8?與Unicode的差別?

    • Unicode 是字符集;UTF-8 是編碼。
    • UTF-8是為了解決向下相容ASCII碼而設計的。
    • Unicode中前128個字元與ASCII碼一一對應。
    • ASCII是UTF-8的子集。

    延伸閱讀:Unicode 与 UTF8,16,32什么意思以及之间的联系


    計算機的基本儲存單位是「位元(bit)」,通過開關變化設置表達值0或1。在有兩個位元的情況下可以得到四個不同的狀態:

    00 01 10 11

    如果有三個位,則有八種狀態:

    000 001 010 011 100 101 110 111

    每當增加一個位時,將得到兩倍的狀態。

    電腦常以8個位元為存取單位,因此8個位元稱為「位元組(byte)」。

    計算機常用單位

    20200607072841 【計算機組織與結構】初步認識計算機世界的數字系統

    延伸閱讀二、八、十與十六進位 (數字系統) 轉換教學

    在計算機世界中 A-B = A+(-B)

    那你可能會好奇,減法直接減就好了,為什麼要用加法計算減法?

    那是因為加法需要「加法器」,那麼減法也就需要「減法器」。

      對於早期的機械計算設備而言,加法器是依靠「齒輪」等機械器件實現的。如果人們強行實現減法器,則需要在同一台設備中增加更多齒輪、軸承、連杆等機械器件,導致設備體積增大、成本上升、故障率升高,這是不划算的。

      類似的,對於現代數字電子計算機(各種電腦)來說,雖然其體積遠比當年的機械計算機小,但增加一個「減法器」,將要求工程師在晶片上增加更多電晶體以及相關電路,這會增大晶片面積、功耗和一系列開銷,導致晶片成本升高。

    因此,為了降低不必要的成本,工程師和科學家想了一招:

    能否將加法和減法都統一於「加法」?

    這樣一來,只需一台擁有「加法」功能的機器,就可以既算加法,也能算減法。

    這就是人們在計算機底層使用補碼的原因。


    有號數表示法

    而常見的有符號數表示法有以下幾種:

    sign & magnitude(S&m)

      分配一個符號位(sign bit)來表示這個符號:設定這個位(通常為最高有效位)為0表示一個正數,為1表示一個負數。

      數字中的其它位指示數值(或者絕對值)。因此一個位元組只有7位(除去符號位),數值的範圍從0000000(0)到1111111(127)。這樣當你增加一個符號位(第八位)後,可以表示從−127(10)到+127(10)的數字。

      這種表示法導致的結果就是可以有兩種方式表示零,00000000(0)與10000000(−0),這大大增加數位電路的複雜性和設計難度。CPU亦須執行兩次比較,來測試運算結果是否為零。

    20200607070701 【計算機組織與結構】初步認識計算機世界的數字系統

    Ones’ complement

      一個負數的二進位數一補數形式為其絕對值部分按位元取反(即符號位不變,其餘各位按位元取反)。同原碼表示一樣,0的一補數表示形式也有兩種:00000000(+0)與11111111(−0)

      舉例來說,原碼10101011(-43)的一補數形式為11010100(−43)。有符號數用一補數表示的範圍為−(2^(N−1)−1)到(2^(N−1)−1),以及+/−0。一個慣常的八位的位元組便是(可表示)−127(10)到+127(10),以及00000000(+0)或者11111111(−0)。

    溢位需做端迴進位。

           二進位    十進位
        11111110     -1
     +  00000010     +2
     ..........................
      1 00000000      0   <-- 錯誤答案
               1     +1   <-- 加上進位
     ..........................
        00000001      1   <-- 正確答案
    20200607071138 【計算機組織與結構】初步認識計算機世界的數字系統

    Two’s complement

    迴避了0有多種表示的問題以及迴圈進位的需要(溢位不需要做端迴進位)。

    在二補數表示中,負數以位元型樣表示為正值的一補數加1(當作無符號數)。

    在二補數表示中,只有一個0(00000000)。求一個數的二補數(無論是負數還是正數)需要反轉所有位,然後加1。

    可藉由最後一bit是否為1判斷是否為奇數。

    20200607071412 【計算機組織與結構】初步認識計算機世界的數字系統

    下表列出了 4-bit 二進數所能表示的整數:

    • 無符號(unsigned)可表示0到15
    • 符號及值(sign & magnitude)可表示-7到+7,包括-0
    • 一補數(ones’ complement)可表示-7到+7,包括-0
    • 二補數(two’s complement)可表示-8到+7,沒有±0的問題
    20200607071549 【計算機組織與結構】初步認識計算機世界的數字系統

    延伸閱讀ASCII

    浮點數表示法

    實數(Real)

     包含整數部分和小數部分的數值,例如23.7是一個實數,整數部分為23,小數部分是0.7。位數不足會造成精確度及正確度誤差。

      在浮點數表示法中,一個數值是由三個欄位組成:「符號」非正即負;「位移量」顯示小數點應從實際數值往左或右移多少單位(指數形式);「定點數」小數點位置是固定的。

    %E5%9C%96%E7%89%871 【計算機組織與結構】初步認識計算機世界的數字系統

    科學記號(Scientific Notation)

    浮點數表示法的一種。

    20200607073655 【計算機組織與結構】初步認識計算機世界的數字系統
    20200607073734 【計算機組織與結構】初步認識計算機世界的數字系統

    正規化(Normalization)

    將數值轉為小數點左方僅有一個非零數字

    * 十進位科學記號:

    ± d.xxxxxxxx (d = 1 ~ 9, x = 0 ~ 9)

    * 二進位浮點數:

    ± 1.yyyyyyyy (= 0, 1)

    符號、指數和尾數

    * 二進位浮點數儲存 3 項資訊:符號、指數、和尾數

    * 例如:+1000111.0101 → +1.0001110101×26 → 儲存:符號(+)、指數(6)、及尾數(0001110101)

    * 符號:使用一個位元(0, 1)表示

    * 指數:使用超碼表示法(Excess)

    * 尾數:使用定點數表示法

    超碼系統(Excess system)

    * 將整數加一個偏移值(Bias):2^(m–1) –1 (為儲存指數的記憶體大小)

    → 正負整數均轉為正整數

    20200607093825 【計算機組織與結構】初步認識計算機世界的數字系統

    # 例如:

    – m = 8 (偏移=127):超 127 系統(Excess_127 system)

    – m = 11 (偏移=1023):超 1023 系統(Excess_1023 system)

    * 表示程序:

    # 將指數加上偏移值

    # 將結果轉為二進位,若位元<m,左邊補 0 直到位元=m

    * 例如,以 Excess_127 系統表示–25(10):

     → –25 + 127 = 102 → 110 0110 → 0110 0110

    * 為何使用超碼系統來表示指數?

    # 將兩個浮點數相加或相減時,指數僅用於比較大小(不需相加或相減)

     → 不需要使用 2 補數

    # 超碼系統都是正數

     → 比較大小較為快速(不需考慮正負數)

    IEEE 754標準

    20200607094123 【計算機組織與結構】初步認識計算機世界的數字系統

    單倍精準數
    • 符號位元:1個位元,以0表示正數;以1表示負數
    • 指數部分:8個位元,以超127(Excess 127)方式表示
    • 尾數部分:23個位元,從標準化的小數點開始存起,不夠的位元部份補0

      給定一實數10110.100011,先轉換成1.0110100011*2^4,因為是正數,所以符號位元為0,其尾數部分為小數點後0110100011,指數部分為4,以超127方式儲存,因此將指數部分加上127 = 4+127 = 131,再將131轉為二進位得10000011
    因此10110.100011按IEEE-754標準儲存為:
    0 10000011 01101000110000000000000

      也可以透過轉換後的推回原來的數值,例如0 10000101 00101000110000000000000所儲存的數值為多少?
    首先,位元符號為0,所以是正數,指數部分為10000101換成十進位為133,133-127=6,因此0 10000101 00101000110000000000000所儲存的數值為1.0010100011*2^6 也就是1001010.0011

    單精度與倍精度的差別

    為了讓誤差更小,IEEE 754 也定義了如何用 64 bit 來表示浮點數,跟 32 bit 比起來 fraction 部分大了超過兩倍,從 23 bit 變成 52 bit,所以精準度自然提高許多

    從IEEE 754 標準來看為什麼浮點誤差是無法避免的- StarBugs Weekly 星 ...

    來源:https://namepluto.com/%E3%80%90%E8%A8%88%E7%AE%97%E6%A9%9F%E7%B5%84%E7%B9%94%E8%88%87%E7%B5%90%E6%A7%8B%E3%80%91%E5%88%9D%E6%AD%A5%E8%AA%8D%E8%AD%98%E8%A8%88%E7%AE%97%E6%A9%9F%E4%B8%96%E7%95%8C%E7%9A%84%E6%95%B8%E5%AD%97/
    全部共 0則留言
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

    中華科技大學數位化學習歷程 - 意見反應