資料表示基礎:進位制
|
來自規範:資料表示基礎 - 進位制 熟悉進位制的概念,特別是
|
在我們深入數制的世界之前,我們需要一個參考點,我建議您複製下表,以便在本章中隨時參考以檢查您的答案。
| 十六進位制 | 二進位制 | 十進位制 |
|---|---|---|
| 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 答案
8+4 = 1210 010110012 答案
64 + 16 + 8 + 1 = 8910 000001112 答案
4 + 2 + 1 = 710 010101012 答案
64 + 16 + 4 + 1 = 8510 我們如何判斷一個二進位制數是否為奇數? 答案 其最右邊的數字為 1 是否有一種快捷方式來計算由連續 1 組成的二進位制數,例如:011111112 答案 是的,取第一個 0 的列值減 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。十六進位制用於計算機中表示供人類使用的數字,用於記憶體地址、錯誤或顏色程式碼等內容。注意:十六進位制之所以使用,是因為它是二進位制的簡寫,並且更容易讓人記住。它不會佔用計算機記憶體中的更少空間,只在紙上或在你的腦海中!計算機仍然必須將所有內容儲存為二進位制,即使它在螢幕上顯示為十六進位制。


|
練習:十六進位制 將以下十六進位制數轉換為十進位制 答案 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) 為什麼可能使用十六進位制? 答案 以便使錯誤訊息和記憶體地址等內容更容易讓人類理解、閱讀和記憶——因為它們更短。 給出十六進位制的兩種用途? 答案
|