跳轉至內容

資料表示基礎:進位制

來自Wikibooks,開放世界的開放書籍

試卷 2 - ⇑ 資料表示基礎 ⇑

← 數制 進位制 位元和位元組 →



進位制

[編輯 | 編輯原始碼]
來自規範:資料表示基礎 - 進位制

熟悉進位制的概念,特別是

  • 十進位制(基數 10)
  • 二進位制(基數 2)
  • 十六進位制(基數 16)。


在十進位制、二進位制和十六進位制之間進行轉換。

在我們深入數制的世界之前,我們需要一個參考點,我建議您複製下表,以便在本章中隨時參考以檢查您的答案。

十六進位制 二進位制 十進位制
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
A 1010 10
B 1011 11
C 1100 12
D 1101 13
E 1110 14
F 1111 15
10 0001 0000 16

十進位制

[編輯 | 編輯原始碼]

十進位制是您可能從小就使用的數制。它也是基數 10 的另一種說法。這意味著每個數字可以使用 10 個不同的數字,即

0,1,2,3,4,5,6,7,8,9

請注意,如果我們想說“十”,我們會使用上面數字中的兩個數字 1 和 0。

千位 百位 十位 個位
103 102 101 100
1000 100 10 1
5 9 7 3

使用上表,我們可以看到每一列都有一個不同的值分配給它。如果我們知道列值,我們就可以知道數字,這在我們開始檢視其他進位制系統時將非常有用。顯然,上面的數字是:五千、九百、七十和三個單位。

5*1000 + 9*100 + 7*10 + 3*1 = 597310

二進位制

[編輯 | 編輯原始碼]

二進位制是一個基數為 2 的數制,這意味著每個數字可以使用兩個數字

0, 1

使用這兩個數字,我們應該能夠寫出(或近似)所有可以用十進位制寫出的數字。

一百二十八位 六十四位 三十二位 十六位 八位 四位 兩位 個位
27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1
0 1 1 0 1 0 1 0

使用上表,我們可以看到每一列都有一個分配給它的值,該值是 2 的冪(基數!),如果我們取這些值和相應的數字,我們可以計算出數字的值:1*64 + 1*32 + 1*8 + 1*2 = 106。

如果要求您計算二進位制數字的值,最好的起點是用其對應值標記每一列,並將所有包含 1 的列加起來。讓我們看另一個例子

000111112
128 64 32 16 8 4 2 1
0 0 0 1 1 1 1 1

因此,現在我們需要做的就是將包含 1 的列加起來:1*16 + 1*8 + 1*4 + 1*2 + 1*1 = 31

練習:二進位制

將以下二進位制數轉換為十進位制

000011002

答案

128 64 32 16 8 4 2 1
0 0 0 0 1 1 0 0
8+4 = 1210

010110012

答案

128 64 32 16 8 4 2 1
0 1 0 1 1 0 0 1
64 + 16 + 8 + 1 = 8910

000001112

答案

128 64 32 16 8 4 2 1
0 0 0 0 0 1 1 1
4 + 2 + 1 = 710

010101012

答案

128 64 32 16 8 4 2 1
0 1 0 1 0 1 0 1
64 + 16 + 4 + 1 = 8510

我們如何判斷一個二進位制數是否為奇數?

答案

其最右邊的數字為 1

是否有一種快捷方式來計算由連續 1 組成的二進位制數,例如:011111112

答案

是的,取第一個 0 的列值減 1

128 64 32 16 8 4 2 1
0 1 1 1 1 1 1 1
= 128 - 1 = 127 = 64 + 32 + 16 + 8 + 4 + 2 + 1
000011112 = 16 - 1 = 15 = 8 + 4 + 2 + 1
000001112 = 8 - 1 = 7 = 4 + 2 + 1

如果我們要使用八進位制(一個基數為 8 的數制),列出每個數字可以取的不同數字

答案


0, 1, 2, 3, 4, 5, 6, 7

十六進位制

[編輯 | 編輯原始碼]
來自規範:資料表示基礎 - 進位制

熟悉並能夠使用十六進位制作為二進位制的簡寫,理解它為什麼以這種方式使用。

您可能會從表中注意到,一個十六進位制數字可以精確地表示 4 個二進位制位。十六進位制對我們來說是一種書寫二進位制的簡寫方式,並且可以更輕鬆地處理長二進位制數字。

計數是一個基本概念,使用符號來表示一組物件。我們習慣於使用 10 個這樣的符號(0-9)進行計數。當我們用完符號時,我們開始一列新的數字來表示更大的值集合。還有其他使用不同數量符號的計數方法,但是,計數過程以相同的方式進行。

十六進位制是一個基數為 16 的數制,這意味著我們將有 16 個不同的數字來表示我們的數字。唯一的問題是我們在 9 之後用完了數字,並且知道 10 被計為兩位數,我們需要使用字母來代替

0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

我們可以對十進位制和二進位制執行完全相同的事情,並寫出我們的表格。

165 164 163 162 161 160
1 048 576 65536 4096 256 16 1
0 0 3 4 A F

因此,現在我們需要做的就是將包含值的列加起來,但請記住 A = 10,B = 11,C = 12,D = 13,E = 14,F = 15。

3*4096 + 4*256 + (A)10*16 + (F)15*1 = 1348716

您可能想知道,當我們有二進位制和十進位制時,以及當計算機以二進位制方式儲存和計算所有內容時,為什麼我們要使用十六進位制。答案是它完全是為了人類的方便。考慮以下示例

表示 基數
EFFE1116 基數 16 十六進位制
1572814510 基數 10 十進位制
1110111111111110000100012 基數 2 二進位制

所有數字都是相同的,最容易讓人記住/理解的版本是基數 16。十六進位制用於計算機中表示供人類使用的數字,用於記憶體地址、錯誤或顏色程式碼等內容。注意:十六進位制之所以使用,是因為它是二進位制的簡寫,並且更容易讓人記住。它不會佔用計算機記憶體中的更少空間,只在紙上或在你的腦海中!計算機仍然必須將所有內容儲存為二進位制,即使它在螢幕上顯示為十六進位制。

A colour palette showing each colour can be shown as a hexadecimal code
一個顯示每種顏色的調色盤可以用十六進位制程式碼表示
Error messages are written using hex to make it easier for us to remember and record them
錯誤訊息使用十六進位制編寫,以便我們更容易記住和記錄它們
練習:十六進位制

將以下十六進位制數轉換為十進位制
A116

答案

16  1
 A  1

16 * 10 + 1 * 1 = 16110

FF16

答案

16  1
 F  F

16 * 15 + 1 * 15 = 25510

0D16

答案

16  1
 0  D

16 * 0 + 1 * 13 = 1310

3716

答案

16  1
 3  7

16 * 3 + 1 * 7 = 5510

我們為什麼要使用十六進位制系統?

答案

十六進位制用於人類,因為它更短,更容易理解和閱讀。

列舉十六進位制系統的一個用途

答案

十六進位制用於錯誤訊息程式碼、記憶體地址和顏色程式碼

進位制轉換

[編輯 | 編輯原始碼]

您之前看到的從十六進位制轉換為十進位制的求和看起來有點麻煩,並且在考試中您不希望出現任何錯誤,因此我們必須找到一種更簡單的方法來進行轉換。

由於 4 個二進位制位由一個十六進位制數字表示,因此在兩者之間進行轉換非常簡單。您可以將二進位制位分組為 4 位一組,從右開始,並在需要時在左側新增額外的 0,然後將每個組轉換為其十六進位制等效項。例如,二進位制數 01101100111101012 可以這樣寫

0110 1100 1111 0101

然後透過使用上表,您可以將每組 4 位轉換為十六進位制

0110 1100 1111 0101
  6    C    F    5

因此,二進位制數 01101100111101012 在十六進位制中為 6CF516。我們可以透過將兩者都轉換為十進位制來檢查這一點。首先我們將轉換二進位制數,因為您已經知道如何執行此操作

32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1
0 1 1 0 1 1 0 0 1 1 1 1 0 1 0 1

透過將列相乘然後將結果相加,答案為 2789310

注意列標題都是2的冪,,等等。要將十六進位制轉換為十進位制,我們必須使用以16為底的冪作為列標題,如下所示。

4096 256 16 1
6 C F 5

(你應該記住A-F的值)

將它們全部加起來,我們得到2789310,這表明01101100111101012等於6CF516

要將十進位制轉換為十六進位制,建議先將數字轉換為二進位制,然後使用上述簡單方法將二進位制轉換為十六進位制。

總之,要將一個數字轉換為另一個數字,我們可以使用以下規則:十六進位制 <-> 二進位制 <-> 十進位制

練習:十六進位制和進位制轉換

將以下十六進位制值轉換為十進位制

1216

答案

  1    2  (Hex)
0001 0010 (Binary)

128 64 32 16  8  4  2  1
  0  0  0  1  0  0  1  0 = 16+2 = 1810 (decimal)

A516

答案

  A    5  (Hex)
1010 0101 (Binary)

128 64 32 16  8  4  2  1
  1  0  1  0  0  1  0  1  = 128+32+4+1 = 16510 (decimal)

7F16

答案

  7    F  (Hex)
0111 1111 (Binary)

128 64 32 16  8  4  2  1
  0  1  1  1  1  1  1  1  = 64+32+8+4+2+1 = 12710 (decimal)

1016

答案

  1    0  (Hex)
0001 0000 (Binary)

128 64 32 16  8  4  2  1
  0  0  0  1  0  0  0  0  = 1610 (decimal)

將以下二進位制數轉換為十六進位制

101011012

答案

1010 1101 (Binary)
  A    D  (Hex)

1101112

答案

0011 0111 (Binary)
  3    7  (Hex)

101011112

答案

1010 1111 (Binary)
  A    F  (Hex)

1110101000012

答案

1110 1010 0001 (Binary)
  E    A    1  (Hex)

將以下十進位制數轉換為十六進位制

8710

答案

128 64 32 16  8  4  2  1
  0  1  0  1  0  1  1  1  = 64+16+4+2+1 = 8710 (decimal)
0101 0111 (Binary)
  5    7  (Hex)

1210

答案

128 64 32 16  8  4  2  1
  0  0  0  0  1  1  0  0  = 8+4 = 12(decimal)
0000 1100 (Binary)
  0    C  (Hex)

11710

答案

128 64 32 16  8  4  2  1
  0  1  1  1  0  1  0  1  = 64+32+16+4+1 = 117(decimal)
0111 0101 (Binary)
  7    5  (Hex)

為什麼可能使用十六進位制?

答案

以便使錯誤訊息和記憶體地址等內容更容易讓人類理解、閱讀和記憶——因為它們更短。

給出十六進位制的兩種用途?

答案


  • 錯誤訊息程式碼
  • 記憶體地址位置
  • 顏色程式碼
華夏公益教科書