歡迎來到數據的世界!
你有沒有想過,電腦是如何分辨你想相加的「數字」、你名字裡的「字母」,還是測驗中「真/假」的答案呢?由於電腦底層實際上只懂電訊號(開或關),我們需要利用數據類型 (Data Types) 來告訴電腦如何解讀這些 1 和 0。在本章中,我們將探討數據的「基礎組件」,以及電腦如何處理數字、文本和邏輯。如果一開始覺得數學部分很多,請別擔心——一旦你看出了其中的規律,這就像學會了一種秘密代碼一樣有趣!
1. 「基礎知識」:原始數據類型
在我們深入探討二進制之前,先來看看我們給數據貼上的標籤。想像這些數據類型就像形狀不同的容器;你不會把湯裝進濾網裡,同樣地,你也不會把名字存放在「數字」盒子裡。
你需要掌握的「五大類型」:
- 整數 (Integer): 整數(例如:7, -12, 1066)。不允許有小數點!
- 實數 (Real/Floating Point): 帶有小數部分的數字(例如:3.14, -0.5, 10.0)。
- 字符 (Character): 單個字母、數字或符號(例如:'A', '!', '3')。
- 字符串 (String): 字符的集合,通常用於文本(例如:"Hello World", "Computer Science")。
- 布林值 (Boolean): 只有兩個值:True(真) 或 False(假)(常用於開關或邏輯判斷)。
快速複習: 你會為價格使用哪種數據類型?實數 (Real)。那班級裡學生的人數呢?整數 (Integer)。
2. 數字系統:二進制與十六進制
我們日常生活中使用十進制 (Denary)。電腦則使用二進制 (Binary)。有時,人類會使用十六進制 (Hexadecimal) 作為簡寫,因為二進制寫起來實在太長且令人困惑!
二進制 (Binary, 基數 2)
二進制只使用兩個數字:0 和 1。二進制的每一「位」都是 2 的冪次方。
示例:二進制數 1011\( (1 \times 8) + (0 \times 4) + (1 \times 2) + (1 \times 1) = 11 \) (十進制)。
十六進制 (Hexadecimal, 基數 16)
十六進制使用 0-9,然後用 A, B, C, D, E, F 來表示 10-15 的值。對人類來說,閱讀 'FF' 比閱讀 '11111111' 要容易得多!
如何將十六進制轉換為二進制:
將每個十六進制數字轉換為 4 位的二進制「半字節 (nibble)」。
示例:十六進制 'A3'
A = 10 = 1010 (二進制)
3 = 3 = 0011 (二進制)
因此,A3 = 10100011
你知道嗎? 十六進制常用於 HTML 顏色代碼(例如 #FF0000 代表紅色)和 MAC 地址。
重點總結: 二進制是給電腦看的;十六進制是人類便於閱讀的二進制簡寫;十進制是給我們人類用的。
3. 二進制算術:加法與減法
二進制的加法和十進制很像,只是你會更早發生「進位」!
加法規則:
- 0 + 0 = 0
- 0 + 1 = 1
- 1 + 1 = 0(進位 1)
- 1 + 1 + 1 = 1(進位 1)
常見錯誤: 忘記進位 1 會導致整道算式出錯。請務必在下一位的上方清楚寫下你的進位數!
減法:
在 OCR 課程大綱中,我們通常通過加上一個負數來進行減法。要做到這一點,我們首先需要知道如何表示負數。
4. 負數:符號位與數值表示法 (Sign & Magnitude) 和 二補數 (Two's Complement)
由於二進制中沒有 "-" 符號,我們必須用一位來表示正負號。
符號位與數值 (Sign and Magnitude)
最左側的位元稱為符號位 (Sign Bit)。
0 = 正數 (+)
1 = 負數 (-)
示例(8-bit): 00000101 是 +5。10000101 是 -5。
二補數 (Two's Complement)
這是最推薦的方法,因為它讓 CPU 的運算更簡單。若要將一個正數變為負數:
1. 從正數的二進制開始。
2. 反轉 (Flip) 所有位元(0 變 1,1 變 0)。
3. 將結果加 1。
記憶口訣: 「反轉並加一」,即可輕鬆將正數變負數!
關鍵總結: 二補數更好,是因為它允許電腦使用與加法相同的硬件來進行減法運算。
5. 實數:浮點數表示法 (Floating Point Representation)
我們該如何在二進制中儲存 12.5?我們使用類似科學記號表示法(例如 \(1.25 \times 10^1\))的方法。在二進制中,它被拆分為兩部分:尾數 (Mantissa) 和 指數 (Exponent)。
公式: \( \text{Number} = \text{Mantissa} \times 2^{\text{Exponent}} \)
歸一化 (Normalisation)
為了確保盡可能精確,我們會對數字進行歸一化。歸一化後的正數總是從 01 開始;歸一化後的負數總是從 10 開始。
如果一開始覺得困難,請別擔心: 只要記住尾數給你「數字」,而指數告訴你小數點該往哪移。正指數將小數點向右移;負指數將小數點向左移。
快速複習: 進行歸一化是為了在給定位元數下提供最大精確度。
6. 字符集:ASCII 與 Unicode
字符集是一個龐大的「查詢表」,將唯一的二進制數與特定的字符連接起來。
- ASCII: 使用 7 或 8 位元,可以表示 128(或 256)個字符。非常適合英語,但沒有足夠空間容納符號(如表情符號)或不同語言(如中文或阿拉伯語)。
- Unicode: 使用 16 或 32 位元,可以表示數百萬個字符!它包含了所有語言,甚至包括 🍕 表情符號。
權衡考量: Unicode 可以表示更多字符,但與 ASCII 相比,它在每個字符上佔用更多儲存空間。
你知道嗎? Unicode 的前 128 個編碼與 ASCII 完全相同,以保持兼容性!
本章總結
- 原始數據類型: 數據的基本標籤(整數、實數等)。
- 二進制/十六進制: 我們如何用基數 2 和 16 表示數字。
- 二補數: 處理負數最聰明的方法。
- 浮點數: 我們如何使用尾數和指數處理小數。
- 字符集: 用於基礎的 ASCII 和涵蓋一切的 Unicode。