1 2 SPOTLIGHT 相 信 大 家 都 已 經 知 道, 電 腦 是 透 過 0 與 1 的 位 元 (bit) 來 處 理 資 料 的 數 位 電 子 裝 置 人 類 社 會 所 使 用 的 數 字 系 統 (number system), 或 稱 為 數 值 系 統, 是 早 在 文 明 還 未 進 化 的 時 代 就 已 經 因 為 十 根 手 指 頭 的 關 係 而 採 用 了 十 進 制 至 今 數 字 系 統 與 068 3 資 訊 世 界 的 數 字 系 統 : 二 進 制 八 進 制 十 六 進 制 4 因 此 以 星 期 來 看, 可 以 算 是 七 進 制 ( 雖 然 沒 有 星 期 零 ), 以 天 來 看, 就 是 廿 四 進 制, 以 小 時 和 分 鐘 來 看 就 是 六 十 進 制 為 了 要 讓 電 腦 環 境 裡 的 二 進 制 數 字, 能 方 便 習 慣 於 十 進 制 的 人 們 處 理 記 憶, 因 此 數 學 界 透 過 了 八 進 制 (octal system) 和 十 六 進 制 (hexadecimal system) 來 表 示 電 腦 裡 的 各 種 數 字 畢 竟, 要 讓 一 般 人 記 住 或 閱 讀 由 0 與 1 組 成 的 一 長 串 資 料, 實 在 是 相 當 困 難 068 1
資 訊 世 界 的 數 字 系 統 : 二 進 制 八 進 制 十 六 進 制 ( 續 ) 5 資 訊 世 界 的 數 字 系 統 : 二 進 制 八 進 制 十 六 進 制 ( 續 ) 6 因 為 二 進 制 若 以 3 個 位 元 來 算 時, 是 000 到 111 之 間, 在 數 量 上 一 共 是 8 個, 而 若 以 4 位 元 來 算, 就 是 0000 到 1111 之 間, 為 什 麼 電 腦 裡 的 二 進 制 系 統 要 轉 換 成 八 進 制 或 十 六 進 制, 而 不 挑 七 或 十 三 的 其 他 進 制 來 轉 換 呢? 在 數 量 上 則 是 16 個 因 此, 才 會 以 八 進 制 和 十 六 進 制 來 處 理 進 制 轉 換 雖 然 我 們 的 日 常 生 活 裡 不 太 會 用 到 八 進 制 與 十 六 進 制, 但 如 果 在 處 理 電 腦 的 計 算 時, 要 將 八 進 制 或 十 六 進 制 轉 換 成 二 進 制, 一 般 在 數 學 上 都 會 先 將 數 字 轉 換 成 十 進 制, 不 僅 如 此, 若 要 將 二 進 制 的 數 字 轉 換 成 八 進 制 或 十 六 進 制, 也 是 要 先 轉 換 成 十 進 制 十 進 制 是 人 類 最 為 熟 悉 的 數 字 系 統 另 外, 為 了 避 免 在 標 示 時 搞 不 清 楚 所 使 用 的 是 幾 進 制, 要 是 想 特 別 指 明 數 字 的 進 制 時, 會 以 括 號 把 該 數 字 框 住, 並 且 在 後 方 加 上 小 字 的 數 字, 如 十 進 制 的 365 則 為 :(365) 10 7 (1101) 2 的 四 個 位 數 中, 右 邊 算 起 的 第 一 個 位 數, 也 就 是 所 謂 的 最 小 位 數 (least significant digit, LSD, 或 稱 為 最 低 位 數 或 最 小 位 元 MSB) 就 代 表 的 2 的 0 次 方, 也 就 是 1; 第 二 的 位 數 為 2 的 1 次 方, 即 是 2; 第 三 個 位 數 乃 2 的 2 次 方, 等 於 4; 最 左 邊 那 個 位 數, 即 所 謂 的 最 大 位 數 (most significant digit, MSD, 或 稱 為 最 高 位 數 或 最 大 位 元 MSB) 就 是 2 的 3 次 方, 所 以 是 8 例 如 數 字 (1101) 2 是 十 進 制 中 的 13, 因 為 從 左 邊 開 始 累 積 的 數 量 為 :(2 3 1) + (2 2 1) + (2 1 0) + (2 0 1) = 8 + 4 + 1 = 13 8 2
9 10 (8 2 3) + (8 1 1) + (8 0 6) = 192 + 8 + 6 = 206 而 十 六 進 制 的 (316) 16 就 是 十 進 制 的 :(16 2 3) + (16 1 1) + (16 0 6) = 768 + 16 + 6 = 790 (101101) 2 = (2 5 1) + (2 4 0) + (2 3 1) + (2 2 1) + (2 1 0) + (2 0 1) = 32 + 8 + 4 + 1 = 45 (524) 8 = (8 2 5) + (8 1 2) + (8 0 4) = 320 + 16 + 4 = 340 (2BF) 16 = (16 2 2) + (16 1 11) + (16 0 15) = 512 + 176 + 15 = 70 070 070 11 12 703 除 以 16 得 出 43 餘 15, 因 此 最 右 邊 的 LSD 位 數 是 15, 也 就 是 F 剩 下 的 43 仍 大 於 16, 所 以 還 要 再 除, 得 出 2 餘 11, 第 二 位 數 為 11, 也 就 是 B 因 為 2 小 於 16, 故 不 須 再 除, 就 拿 著 當 最 左 邊 的 MSD 位 數, 因 此 右 起 第 三 位 數 為 2 最 後 把 這 些 得 到 的 位 數 串 起 來, 右 起 :F B 2= (2BF) 16 071 071 3
13 14 340 除 以 8 得 出 42 餘 4, 因 此 最 右 邊 的 LSD 位 數 是 4 剩 下 的 42 仍 大 於 8, 所 以 還 要 再 除, 得 出 5 餘 2, 第 二 位 數 為 2 因 為 5 小 於 8, 故 不 須 再 除, 就 拿 著 當 最 左 邊 的 位 數, 因 此 右 起 第 三 位 數 MSD 為 5 最 後 把 這 些 得 到 的 位 數 串 起 來, 右 起 :4 2 5= (524) 8 071 072 45 除 以 2 得 出 22 餘 1, 因 此 最 右 邊 的 位 數 LSD 是 1 剩 下 的 22 仍 大 於 2, 所 以 還 要 再 除, 得 出 11 餘 0, 右 起 第 二 位 數 為 0 剩 下 的 11 仍 大 於 2, 所 以 還 要 再 除, 得 出 5 餘 1, 第 三 位 數 為 1 剩 下 的 5 仍 大 於 2, 所 以 還 要 再 除, 得 出 2 餘 1, 第 四 位 數 為 1 剩 下 的 2 仍 大 於 2, 所 以 還 要 再 除, 得 出 1 餘 0, 第 五 位 數 為 0 右 起 第 六 位 數 為 1, 因 為 1 小 於 2, 故 不 須 再 除, 就 拿 著 當 最 左 邊 的 位 數, 因 此 右 起 第 六 位 數 MSD 為 1 最 後 把 這 些 得 到 的 位 數 串 起 來, 右 起 :1 0 1 1 0 1= (101101) 2 15 Windows 7 作 業 系 統 中 所 附 的 小 算 盤 裡, 已 經 具 備 了 二 進 制 十 進 制 八 進 制 十 六 進 制 之 間 的 轉 換 功 能 使 用 時 可 以 透 過 : 開 始 所 有 程 式 附 屬 應 用 程 式 小 算 盤 進 入 此 程 式 後, 將 工 具 列 的 檢 視 切 換 至 程 式 設 計 師 模 式 即 可 16 071 072 4
小 數 點 在 學 會 了 二 進 制 十 進 制 八 進 制 十 六 進 制 之 間 的 轉 換 之 後, 接 著 要 來 談 談 數 字 系 統 裡 的 另 一 個 話 題 : 小 數 點 (radix point, 簡 稱 為 point) 小 數 點 常 出 現 在 需 要 精 確 表 示 的 數 字 裡, 並 且 用 來 分 隔 整 數 (whole number) 與 小 數 (fractional number) 除 了 十 進 制 會 用 到 小 數 點, 二 進 制 以 及 其 他 進 制 當 然 也 會 用 到 在 小 數 的 部 分, 因 為 離 小 數 點 最 近 的 位 數 是 小 數 裡 的 最 大 位 元, 離 小 數 點 最 遠 的 位 數 是 小 數 裡 的 最 小 位 元, 所 以, 在 轉 換 時 就 會 依 據 小 數 點 算 起, 按 照 負 次 方 的 順 序 來 類 推 17 (2 3 1) + (2 2 0) + (2 1 1) + (2 0 0) + (2-1 1) + (2-2 1) + (2-3 0) + (2-4 1) = 8 + 2 + 0.5 + 0.25 + 0.0625 =(10.8125) 10 另 一 方 面, 如 果 要 將 具 有 小 數 的 十 進 制 數 字 轉 成 二 進 制 時, 其 計 算 的 方 式 也 是 要 將 整 數 與 小 數 分 開 處 理 18 072 073 19 20 53 除 以 2 得 出 26 餘 1, 因 此 最 右 邊 的 位 數 是 1 剩 下 的 26 仍 大 於 2, 所 以 還 要 再 除, 得 出 13 餘 0, 右 起 第 二 位 數 為 剩 下 的 13 仍 大 於 2, 所 以 還 要 再 除, 得 出 6 餘 1, 第 三 位 數 為 1 剩 下 的 6 仍 大 於 2, 所 以 還 要 再 除, 得 出 3 餘 0, 第 四 位 數 為 0 剩 下 的 3 仍 大 於 2, 所 以 還 要 再 除, 得 出 1 餘 1, 第 五 位 數 為 1 因 為 1 小 於 2, 故 不 須 再 除, 就 拿 著 當 最 左 邊 的 位 數, 因 此 右 起 第 六 位 數 為 1 最 後 把 這 些 得 到 的 位 數 串 起 來, 右 起 :1 1 0 1 0 1= (110101) 2 073 073 5
整 數 部 分 (53) 10 : 53 除 以 8 得 出 6 餘 5, 因 此 最 右 邊 的 LSD 位 數 是 5 因 為 6 小 於 8, 故 不 須 再 除, 就 拿 著 當 最 左 邊 的 位 數, 因 此 右 起 第 二 位 數 MSD 為 6 最 後 把 這 些 得 到 的 位 數 串 起 來, 右 起 :5 6=(65) 8 小 數 部 分 (0.125) 10 : 小 數 0.125 乘 以 8 得 到 1, 取 下 第 一 個 超 過 小 數 點 的 整 數 結 果 ( 即 使 是 零 也 要 取 ), 拿 來 當 最 終 目 的 數 字 的 最 大 位 數 (MSD), 所 以 是 1; 因 為 之 後 遇 到 剩 下 的 小 數 部 分, 第 一 個 數 字 已 經 為 0, 所 以 完 成 整 個 運 算 因 此, 取 得 的 小 數 點 後 數 字 為 :1=(0.1) 8 最 後 把 整 數 和 小 數 部 分 拼 起 來, 原 本 的 (53.125) 10 就 成 為 :(65) 8 21 整 數 部 分 (53) 10 : 53 除 以 16 得 出 3 餘 5, 因 此 最 右 邊 的 LSD 位 數 是 5 因 為 3 小 於 16, 故 不 須 再 除, 就 拿 著 當 最 左 邊 的 位 數, 因 此 右 起 第 二 位 數 MSD 為 3 最 後 把 這 些 得 到 的 位 數 串 起 來, 右 起 :5 3= (35) 16 小 數 部 分 (0.125) 10 : 小 數 0.125 乘 以 16 得 到 1, 取 下 第 一 個 超 過 小 數 點 的 整 數 結 果 ( 即 使 是 零 也 要 取 ), 拿 來 當 最 終 目 的 數 字 的 最 大 位 數 (MSD), 所 以 是 2; 因 為 之 後 遇 到 剩 下 的 小 數 部 分, 第 一 個 數 字 已 經 為 0, 所 以 完 成 整 個 運 算 因 此, 取 得 的 小 數 點 後 數 字 為 :2= (0.2) 16 最 後 把 整 數 和 小 數 部 分 拼 好, 原 本 (53.125) 10 變 為 :(35) 16 + 22 + (0.1) 8 = (65.1) 8 074 (0.2) 16 = (35.2) 16 074 正 負 數 正 負 數 的 使 用, 正 數 (positive number) 的 觀 念 很 簡 單, 就 是 手 上 有 的 東 西 而 在 負 數 (negative number) 方 面, 最 早 出 現 的 場 合 就 是 賒 欠 和 不 足 對 於 數 學 中 關 於 負 數 的 概 念, 在 運 算 時 其 實 也 有 相 減 (miuns) 的 意 思 一 般 來 說, 要 處 理 二 進 制 正 負 數 的 方 式 有 :(1) 最 大 位 元 表 示 法 ;(2) 1 的 補 數 表 示 法 ;(3) 2 的 補 數 表 示 法 074 23 正 負 數 ( 續 ) 在 二 進 制 中, 會 使 用 的 補 數 有 1 的 補 數 與 2 的 補 數 兩 種 1 的 補 數 (1 s complement) 是 指 兩 數 的 和 為 1, 則 此 兩 數 互 為 1 的 補 數, 即 1 和 0 互 為 1 的 補 數 而 2 的 補 數 (2 s complement) 則 是 指 將 原 數 變 成 1 的 補 數 之 後 再 加 上 1 這 中 間 最 大 的 差 別 就 在 於, 使 用 1 的 補 數 還 是 會 + 0 和 - 0 的 情 況, 而 2 的 補 數 則 不 會, 所 以 2 的 補 數 是 最 在 這 些 表 示 法 中, 最 適 合 用 來 表 示 二 進 制 正 負 數 整 數 的 方 法 如 果 我 們 以 一 個 4 位 元 (bit) 的 二 進 制 整 數 來 說 明 的 話, 或 許 就 能 很 容 易 地 理 解 了 075 24 6
正 負 數 ( 續 ) 25 既 然 電 腦 是 透 過 二 進 制 來 處 理 所 有 的 資 料, 因 此 人 們 需 要 用 到 的 各 種 文 字 (letter) 符 號 (symbol) 數 字 (digit) 都 要 透 過 一 套 放 諸 四 海 皆 準 的 (coding system) 來 規 範, 才 能 讓 不 同 電 腦 間 的 資 料 能 互 相 流 通 26 075 075 ASCII 與 Unicode 27 BIG-5 與 CNS11643 28 電 腦 裡 最 常 用 到 的 字 元 符 碼 格 式 (character coding format): ASCII EBCDIC 以 及 Unicode, 這 三 種 符 碼 格 式 相 互 轉 換 美 國 標 準 資 訊 交 換 碼 ASCII( 發 音 為 Ask-Ee)American Standard Code for Information Interchange, 使 用 了 7 位 元 也 就 是 以 128 個 不 同 的 排 列 組 合 (2 7 =128), 來 表 達 不 同 的 字 元 而 ASCII 碼 還 有 一 個 變 形 稱 之 為 延 伸 ASCII (extended ASCII), 它 使 用 了 八 位 元 也 就 是 以 128 再 加 上 一 個 位 元, 總 計 256 個 狀 態 (2 8 =256) 來 表 示 而 在 各 個 非 英 語 系 的 國 家 裡, 為 了 要 正 確 呈 現 其 文 字 ), 就 需 要 發 展 出 一 套 適 合 自 身 語 言 的 文 字 內 碼, 甚 至 是 連 同 樣 使 用 羅 馬 字 為 基 礎 的 歐 洲 國 家, 也 會 使 用 像 是 ISO8859 的 編 碼 格 式 在 臺 灣 以 及 部 分 華 人 地 區 通 用 的 正 體 中 文, 最 早 就 是 以 資 策 會 在 1984 年 聯 合 幾 家 廠 商 所 推 出 的 BIG-5( 大 五 碼 ) 來 編 排, 以 適 用 於 當 年 的 中 文 電 腦 軟 體 075 076 7
29 30 BIG-5 與 CNS11643 ( 續 ) ISO 10646 與 Unicode 雖 然 被 稱 為 統 一 碼 或 萬 國 碼 的 Unicode 允 許 了 各 國 語 言 文 字 的 編 碼 空 間, 但 在 此 之 前, 國 際 間 其 實 已 經 有 了 一 些 具 有 規 模 的 國 際 編 碼, 最 知 名 的 就 是 出 自 於 國 際 標 準 化 組 織 這 個 早 在 1984 年 就 已 經 問 世 的 編 碼 標 準, 在 推 出 之 後 被 命 名 為 通 用 符 碼 字 元 集 (Universal Coded Character Set, UCS) 儘 管 有 了 這 些 萬 國 語 言 編 碼 的 制 定, 而 且 當 今 許 許 多 多 的 網 路 服 務 都 可 以 透 過 瀏 覽 器 軟 體 來 進 行, 但 我 們 也 要 知 道 如 果 語 言 編 碼 的 選 擇 不 當, 將 可 能 導 致 畫 面 出 現 亂 碼 076 077 ISO 10646 與 Unicode ( 續 ) 31 ISO 10646 與 Unicode ( 續 ) 32 078 078 8
ISO 10646 與 Unicode ( 續 ) 33 078 9