章節:數據表示——從我們的世界到電腦的世界

大家好!你有沒有想過,你的電腦是怎樣理解你正在看的照片、聽的音樂,甚至是你現在正在閱讀的文字呢?這可不是魔法!電腦有它自己一套獨特的語言,而在這一章,我們將會學習如何「說」這種語言。我們會一起探索各種資訊——從一個簡單的數字到一段複雜的影片——是如何被轉化成電腦能夠理解的格式。

理解這一點是資訊及通訊科技(ICT)中一項非常基礎的技能,這就像在學會閱讀前,必須先學習字母表一樣。讓我們一起深入探索並解讀數碼世界吧!


1. 類比數據與數碼數據:兩個世界

在我們的世界裡,大部分事物都是類比的。而在電腦的世界裡,一切都是數碼的。讓我們來看看這代表甚麼。

什麼是類比數據?

想像一下電燈的調光器,你可以平穩地轉動旋鈕,獲得從完全關閉到完全亮起之間,無限種亮度的級別。

類比數據是連續的,意思是它在一個範圍內可以有無窮多的數值。

  • 真實世界例子:你的聲音聲波、房間的溫度、真實日落中的顏色。

什麼是數碼數據?

現在,想想一個標準的電燈開關。它只有兩個位置:開(ON)或關(OFF)。兩者之間沒有任何中間狀態。

數碼數據是離散的,意思是由固定數量的獨立數值來表示。在電腦中,這被簡化為兩個數值:0(關閉)和1(開啟)。每一個0或1都稱為一個位元(英文binary digit的縮寫)。

  • 真實世界例子:書中的文字(由獨立的字母組成)、足球比賽的比分、你今天走的步數。

不同世界間的轉換

電腦無法理解真實世界中平穩、連續的性質。因此,我們需要將類比數據轉換為數碼數據,電腦才能夠處理。

  • 類比轉數碼轉換(ADC):這是指我們捕捉真實世界的數據並將其轉化為0和1。
    例子:用手機麥克風錄製你的聲音。麥克風捕捉類比聲波,手機的硬件將其轉換為數碼音頻檔案。

  • 數碼轉類比轉換(DAC):這是指電腦將其0和1轉換回我們可以體驗的事物。
    例子:播放MP3檔案。電腦將數碼數據發送到你的耳機或揚聲器,這些設備將數據轉換回你可以聽到的類比聲波。

為什麼電腦「鍾情」數碼數據?

那麼,為什麼要這麼麻煩呢?我們為什麼不直接建造類比電腦呢?資訊科技(IT)系統使用數碼數據有幾個主要原因:

  • 可靠性:數碼訊號更具抗干擾能力(雜訊)。即使「1」有點失真,它仍然是「1」,但類比訊號的任何失真都會改變資訊本身。

  • 完美複製:你可以將數碼檔案複製數百萬次,最後一個副本也會與第一個副本一模一樣。想想複製MP3檔案和複製舊式卡式錄音帶的區別——錄音帶的質量會隨著每次複製而變差!

  • 易於處理:電腦本質上是由數十億個微型開關(電晶體)組成的,這些開關只能處於開啟或關閉狀態。這與數碼數據的1和0完美匹配。

  • 高效儲存:大量的數碼數據可以儲存在非常小的物理空間中(例如在一張微型記憶卡上)。

位元的力量

你使用的位元數量決定了你可以表示多少種不同的事物。關係很簡單:使用 n 個位元,你可以創建 $$2^n$$ 種獨特的組合。

  • 1個位元可以表示 $$2^1$$ = 2 種事物(例如:開/關、真/假)

  • 2個位元可以表示 $$2^2$$ = 4 種事物(例如:00, 01, 10, 11)

  • 3個位元可以表示 $$2^3$$ = 8 種事物(例如:八種不同的顏色)

  • 一組8個位元稱為一個位元組。一個位元組可以表示 $$2^8$$ = 256 種不同的組合。

這個簡單的原理是接下來所有內容的基礎!

重點提示

真實世界的數據大多是類比(連續)的,但電腦只理解數碼數據(離散值,即0和1)。我們在這兩種形式之間進行轉換,以便與電腦互動。電腦使用數碼數據是因為它可靠、易於完美複製,並且處理和儲存效率高。


2. 數字系統:電腦的語言

我們習慣使用十進制(或稱十進位,基數為10)系統,它使用十個數字(0-9)。電腦則使用基於2的冪次的其他系統。讓我們學習如何在這幾種系統之間轉換。別擔心,這就像學習一種新的密碼一樣!

十進制(基數10)轉二進制(基數2)

要將十進制數字轉換為二進制,我們使用重複除以2的方法。

循序漸進指南:將十進制25轉換為二進制

1. 將數字除以2,並記下餘數。
2. 使用結果(商)作為你的新數字,並重複此過程。
3. 持續進行,直到結果為0。
4. 二進制數字是從底部向上讀取的餘數。

25 ÷ 2 = 12 餘數 1
12 ÷ 2 = 6 餘數 0
6 ÷ 2 = 3 餘數 0
3 ÷ 2 = 1 餘數 1
1 ÷ 2 = 0 餘數 1

從底部向上讀取餘數,我們得到 11001。所以,$$25_{10} = 11001_2$$。

二進制(基數2)轉十進制(基數10)

要將二進制轉換為十進制,我們使用位值,這些位值是2的冪次。

循序漸進指南:將二進制11001轉換為十進制

1. 寫下二進制數字。
2. 在每個數字上方(從右到左),寫下它的位值,從 $$2^0=1$$ 開始,然後是 $$2^1=2$$、$$2^2=4$$,依此類推。
3. 將所有為 1 的數字對應的位值加起來。

位值:  16   8   4   2   1
二進制數字:  1    1   0   0   1

現在,將有「1」的位值相加:$$16 + 8 + 1 = 25$$。所以,$$11001_2 = 25_{10}$$。成功了!

十六進制(基數16)

二進制數字會變得非常長,難以讓人閱讀。十六進制(或簡稱Hex)是一種基數為16的系統,用作二進制的速記。它使用數字0-9,然後用字母A-F來表示數值10-15。

十六進制數字:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A (10), B (11), C (12), D (13), E (14), F (15)

二進制與十六進制之間的轉換

這是最簡單的部分!因為 $$16 = 2^4$$,所以每一個十六進制數字都恰好對應 四個 二進制數字。

記憶輔助:二進制轉十六進制轉換表

0000 = 0   |   0100 = 4   |   1000 = 8   |   1100 = C (12)
0001 = 1   |   0101 = 5   |   1001 = 9   |   1101 = D (13)
0010 = 2   |   0110 = 6   |   1010 = A (10) |   1110 = E (14)
0011 = 3   |   0111 = 7   |   1011 = B (11) |   1111 = F (15)

循序漸進指南:二進制轉十六進制

將二進制數字11011010轉換為十六進制。

1. 將二進制數字從右邊開始,分成每4位一組。
1101 1010
2. 使用表格將每組4位元的數字轉換為其十六進制等效值。
1101 = D
1010 = A
3. 組合結果。所以,$$11011010_2 = DA_{16}$$。

循序漸進指南:十六進制轉二進制

將十六進制數字5F轉換為二進制。

1. 獨立取出每個十六進制數字。
5     F
2. 將每個數字轉換為其4位元二進制組。
5 = 0101
F = 1111
3. 組合結果。所以,$$5F_{16} = 01011111_2$$。

你知道嗎?十六進制常被用於網頁設計中表示顏色。例如,#FF0000代表純紅色。前兩位數字(FF)代表紅色,接下來的兩位(00)代表綠色,最後兩位(00)代表藍色。

重點提示

電腦使用二進制(基數2)。我們使用十進制(基數10)十六進制(基數16)是長二進制數字的便捷速記方式。你必須能夠在這三種系統之間進行轉換。關鍵是記住轉換方法:重複除法和位值。


3. 處理負數:二補數

到目前為止,我們只看過正數。但是電腦如何表示-25呢?它不能只是在1和0前面加上一個負號。最常用的方法稱為二補數

即使一開始覺得有點難,也別擔心,這是一個你可以循序漸進學習的過程。我們將使用一個8位元數字作為例子。在一個8位元的帶符號數字中,第一個位元(即最高有效位,簡稱MSB)告訴我們它的符號:0代表正數1代表負數

如何尋找二補數

循序漸進指南:使用8位元二補數表示-25

1. 從正數的二進制表示開始。
首先,找出+25的二進制。我們知道它是11001。在8位元中,我們加上前導零:$$00011001$$。

2. 翻轉所有位元。
將每個0翻轉為1,每個1翻轉為0。這一步驟稱為「一補數」。
由:0001 1001
轉為:1110 0110

3. 結果加1。
將翻轉後的數字加1。
    1110 0110
+                 1
-----------------
=   1110 0111

所以,在8位元二補數中,-25 表示為 11100111。請注意,第一個位元是1,表示這是一個負數!

為什麼要用這種特別的方法?

主要原因是它使電腦的減法變得異常簡單。要減去一個數字,電腦只需加上它的負數版本。所以,$$10 - 5$$ 會變成 $$10 + (-5)$$。這意味著電腦的電路(算術邏輯單元,ALU)只需要知道如何進行加法運算,從而簡化了其設計。

重點提示

二補數是電腦中表示負整數的標準方法。要找到一個數字的二補數,你首先要將它轉換為正數的二進制形式,然後翻轉所有位元,再加1


4. 二進制算術:電腦如何計算

現在我們知道如何表示正數和負數了,接下來讓我們看看電腦是如何進行簡單計算的。

二進制加法

二進制加法遵循四個簡單的規則:

  • 0 + 0 = 0

  • 0 + 1 = 1

  • 1 + 0 = 1

  • 1 + 1 = 0,並向前一位進位1。

例子:將9 (1001) 和 5 (0101) 相加

       1         (進位)
      1 0 0 1     (9)
+     0 1 0 1     (5)
--------------
      1 1 1 0     (14)

讓我們驗證一下:8+4+2 = 14。沒錯!

使用二補數進行二進制減法

正如我們之前提到的,電腦在減法上會「偷步」。要計算 A - B,電腦實際上會執行 A + (-B),其中 -B 是 B 的二補數。

例子:使用8位元二補數計算 9 - 5

1. 表示數字:
+9 = 0000 1001
+5 = 0000 0101

2. 尋找你要減去的數字(-5)的二補數:
+5 = 0000 0101
翻轉:1111 1010
加1:1111 1011(這就是-5)

3. 將第一個數字和二補數結果相加:
              1 1 1   1 1   (進位)
      0000 1001   (9)
+     1111 1011   (-5)
-----------------
    (1)0000 0100   (4)

我們得到答案0000 0100,即4。請注意,最後有一個額外的「進位」位元。在使用二補數進行減法時,我們只需忽略這個最終的進位位元

溢出錯誤

電腦使用固定數量的位元來儲存數字(例如8位元、16位元)。如果計算結果太大而無法容納怎麼辦?這稱為溢出錯誤

快速複習:數字範圍

一個n位元空間可以容納一定範圍的數字。例如,使用8位元二補數:

  • 最小的數字是-128 ($$-2^{7}$$)

  • 最大的數字是+127 ($$2^{7} - 1$$)

溢出錯誤例子

讓我們用8位元來相加100 + 50。結果應該是150。

100 = 0110 0100
50 = 0011 0010

          1             (進位)
      0110 0100   (100)
+     0011 0010   (50)
-----------------
      1001 0110

我們得到的答案是10010110。看看第一個位元!它是1,這表示電腦認為這是一個負數。我們將兩個正數相加,卻得到了一個負數結果。這明顯是一個溢出錯誤的跡象。數字150太大,無法放入一個8位元的帶符號整數中。

避免常犯錯誤

溢出只會發生在以下情況:

  • 你將兩個正數相加,而結果的符號位元是1(負數)。

  • 你將兩個負數相加,而結果的符號位元是0(正數)。

將一個正數和一個負數相加絕不會導致溢出。

重點提示

電腦使用簡單的規則執行加法,並透過加上二補數來處理減法。當計算結果超出可用位元數所能儲存的值範圍時,就會發生溢出錯誤


5. 字元表示法:從「A」到「字」

數字很棒,但是文字呢?電腦是如何儲存字母「A」或字元「?」的呢?答案很簡單:每個字元都被分配一個唯一的二進制數字。這些分配在稱為字元集的標準中定義。

ASCII(美國資訊交換標準碼)

這是最早且最簡單的標準之一。

  • 它使用7位元,可以表示 $$2^7 = 128$$ 種不同的字元。

  • 這足以表示所有英文大寫和小寫字母、數字0-9以及常用的標點符號。

  • 後來,「延伸ASCII」使用8位元($$2^8 = 256$$ 個字元)來添加一些歐洲語言的符號和字元。

ASCII的問題:256個字元遠不足以表示世界上所有語言的字元!

大五碼(Big-5)和國標碼(GB)

為了解決中文的問題,創建了不同的字元集。

  • 大五碼(Big-5):台灣和香港常用的一種標準,用於表示繁體中文字元。

  • 國標碼(GB):中國大陸常用的一種標準,用於表示簡體中文字元。

這些的問題:這些系統可能會產生衝突。一個使用大五碼編碼的文檔,在預期使用國標碼的系統上會顯示為亂碼。這造成了很大的混淆。

萬國碼(Unicode)

萬國碼是現代的通用解決方案。

  • 它的目標是為每種語言中的每個字元提供一個唯一的數字,無論使用什麼平台或程式。

  • 它可以表示超過140,000個字元,包括現代和歷史文字、符號,甚至表情符號!😊

  • UTF-8是實現萬國碼最常見的方式,並且是全球資訊網(World Wide Web)上主流的字元編碼。

萬國碼通過為所有人創建一個龐大、通用的字元集,解決了標準衝突的問題。

重點提示

字元由字元集中定義的唯一二進制代碼表示。ASCII是早期用於英文的標準。大五碼(Big-5)國標碼(GB)是為中文開發的,但可能產生衝突。萬國碼(Unicode)是現代的通用標準,旨在包含每種語言中的每個字元,解決了這些衝突。一個字元集使用的位元越多,它能表示的字元就越多。

重要提示:你的考試需要你知道這些標準的目的,而不是記住任何字母的特定二進制代碼!


6. 數碼化多媒體:將圖像、聲音和影片變為現實

我們已經講了數字和文字,那麼我們每天使用的豐富媒體呢?所有多媒體也必須進行數碼化(轉換為二進制)。

表示圖像

最常見的數碼圖像類型是位圖(或稱點陣圖)。

  • 想像圖像是一個網格。網格中的每個方格都是一個像素(圖像元素)。

  • 電腦儲存每個像素的顏色值。

  • 解像度:網格中的像素數量(例如,1920 x 1080)。更高的解像度意味著更清晰的圖像,但檔案大小會更大。

  • 色深:用於儲存每個像素顏色的位元數。更多的位元意味著更多可能的顏色,但檔案大小也會更大。例如,24位元「真彩色」使用8位元表示紅色,8位元表示綠色,8位元表示藍色,可以表示 $$2^{24}$$ (約1670萬)種不同的顏色!

圖像檔案格式
  • BMP(位圖):無壓縮。儲存每個像素的數據。這意味著完美的圖像品質,但檔案大小非常大。

  • JPG/JPEG(聯合圖像專家組):使用有損壓縮。它巧妙地丟棄了人眼最不容易察覺的一些圖像數據。這大大減小了檔案大小,非常適合網頁上的照片。然而,部分品質會永久損失。

  • PNG(可攜式網絡圖像):使用無損壓縮。它找到了巧妙的方法來更有效地儲存像素數據,而不會丟棄任何數據。品質是完美的(如同BMP),但檔案大小較小。它非常適合圖形、標誌和需要透明背景的圖像。

表示聲音

要將連續的聲波數碼化,需要使用一種稱為抽樣(或取樣)的過程。

  • 聲波的高度(振幅)以每秒數千次的固定間隔進行測量。

  • 每個測量值,或稱「樣本」,都以二進制數字儲存。

  • 當你播放聲音時,電腦讀取這些數字並生成一個聲波,這個聲波與原始聲波非常接近。

聲音檔案格式
  • WAV(波形音頻檔案):無壓縮音頻。它儲存每個樣本的值。這提供了卓越的錄音室級別品質,但檔案非常大(一分鐘音樂約10MB)。

  • MP3(MPEG音頻層-3):使用有損壓縮。就像圖像的JPG一樣,它會移除人類最不可能聽到的部分聲音。這大大減小了檔案大小(一分鐘音樂約1MB),使其非常適合便攜式音樂播放器和串流媒體。

表示影片

影片比你想像的要簡單:它只是一系列非常快速顯示的圖像(稱為影格或幀),並結合了一條音軌。

  • 幀率(每秒影格數,或fps)決定了運動的流暢度。常見的幀率是24、30和60 fps。

  • 影片檔案幾乎總是經過壓縮的,因為未壓縮的影片數據量非常龐大。

影片檔案格式
  • AVI(音頻視頻交錯):一種較舊的容器格式。它可以容納以多種不同方式壓縮的影片和音頻。檔案大小差異很大。

  • MPEG-4(或MP4):一種現代標準,使用非常高效的方法進行高度壓縮。它能在相對較小的檔案大小下提供良好的影片品質,使其成為在線影片(例如在YouTube上)和流動設備最流行的格式。

文件格式

  • TXT(純文本):只儲存字元本身(使用ASCII或萬國碼)。沒有粗體、斜體或字體大小等格式。檔案大小非常小。

  • PDF(可攜式文件格式):以固定版面儲存文字、字體、圖像和格式。文件在任何電腦上看起來都會一樣,這是它的主要優點。

  • DOCX / ODT:這些是文字處理器(如Microsoft Word的DOCX和LibreOffice Writer的ODT)使用的複雜格式。它們儲存文字、格式資訊、圖像、表格等等。

重點提示

所有多媒體都是數碼化的。圖像是像素的網格。聲音透過抽樣聲波來捕捉。影片是一系列帶有音頻的圖像影格。檔案格式使用不同的壓縮技術來管理檔案大小。無損壓縮在不損失品質的情況下減小大小(PNG)。有損壓縮使檔案小得多,但會永久移除一些數據(JPG、MP3)。